前段時間第一次使用Yii2框架,碰到了一些問題,這裏記錄一下。php
一、首先要安裝composer,我在另一篇博客中介紹了如何在Windows下安裝composer。html
二、全局設置 Composer 使用中國鏡像:json
composer config -g repo.packagist composer https://packagist.phpcomposer.com
三、安裝composer-asset-plugin(若是不安裝composer-asset-plugin後面安裝yii2時會出現問題,這裏默認安裝最新版)後端
composer global require "fxp/composer-asset-plugin"
四、(1)安裝基礎版,projectName是本身的項目名。yii2
composer create-project --prefer-dist yiisoft/yii2-app-basic projectName
(2)安裝高級版。(高級版區分了先後臺目錄backend,frontend)app
composer create-project --prefer-dist yiisoft/yii2-app-advanced projectName
注:高級版安裝後須要初始化,雙擊根目錄下的"init.bat"文件,選擇"0"(表示開發環境),以後選擇"yes"就能夠了,會自動生成入口文件。composer
五、配置域名信息就能夠訪問了。(高級版須要分別配置先後臺域名)框架
安裝下來後可能會出現的問題:找不到vendor文件夾。frontend
緣由:composer-asset-plugin沒有安裝或者版本過低yii
解決辦法:找到文件的根目錄,即composer.json文件目錄,打開命令行執行:composer update
找到 /frontend/config/main.php 文件,找到如下代碼,去掉註釋,運行後發現能夠去掉"?r="使用"/"代替,可是仍是不能去掉index.php。
'urlManager' => [ 'enablePrettyUrl' => true, // 美化url去掉 ?r= 'showScriptName' => false, // 隱藏index.php 'rules' => [ ], ],
要去掉index.php,還須要在入口文件下添加.htaccess文件,文件內容以下:
# use mod_rewrite for pretty URL support RewriteEngine on # if a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward the request to index.php RewriteRule . index.php
注:這個須要先後端都配置一遍。
在yii2中若是使用駝峯命名,則默認使用"-",如要訪問UserAdminController控制器下的actionTestUser方法,則訪問路徑爲:/user-admin/test-user
在Yii2中若是不作處理,使用post訪問會報錯。這是由於Yii2使用post請求時默認會使用CSRF驗證。
這裏能夠在表單中加入驗證或者後臺能夠取消掉CSRF驗證。
<input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>" />
在config文件夾下找到"components"配置下的"request"配置,在裏面加入'enableCsrfValidation' => false表示取消掉CSRF驗證。
能夠在單個控制器下添加代碼:
public $enableCsrfValidation = false;
這樣在這個控制器下的方法就可使用post請求了。