Yii2的相關學習記錄,初始化Yii2(二),初始化yii2
前面已經將Yii2下載下來了,那我們就需要能實際的使用。
一、初始化,因為我都是在windows系統下,所以用cmd命令開啟下載下來的Yii2的根目錄。然後運行下面命令:
init
會提示選擇0為開發環境,1為產生環境。一般選生產環境。後期可以同樣輸入此命令來切換開發環境和生產環節,但是需要注意切換時需要提前在“environments”目錄中中提前寫好生產環境的配置,以免切換時覆蓋丟失配置項,後面還會說,現在繼續往下走。
二、設定資料庫,現在前台訪問地址為:http://localhost/vishun/backend/web/index.php,後台訪問地址為:http://localhost/vishun/frontend/web/index.php,其中vishun是我Yii架構安裝的目錄名稱。現在訪問時會報資料庫連接的錯誤,因為資料庫沒有串連上,所以,我們需要先建立一個資料庫(個人比較喜歡用phpmyadmin),然後在Yii2中設定資料庫參數:
設定檔在三個地方存在,common/config,frontend/config,backend/config,一般來說common是放前後台都會用到的設定檔,而frontend和backend則是放各自的設定檔,如果重複,則前背景會覆蓋公用的。
每個檔案夾下又分為main.php和main-local.php,這主要是為了團隊協作,一般團隊成員都在自己的電腦環境下開發,然後提交到git或svn上。所以團隊成員用自己的資料庫帳號密碼什麼的,如果提交上去,其它團隊成員更新下來和自己的帳號密碼不對,就會產生錯誤,所以資料庫等設定檔放在*-local檔案中,提交時*-local的檔案不提交。
但是如果不提交還是會有問題,像是一個新成員加入,直接從git上下載代碼下來,但是資料庫設定檔由於所有人都沒有提交,整個程式不完整,那就導致新成員根本就沒有資料庫的配置。所以這裡還需要用到上方提到過的environments目錄,這裡面有dev(開發)和prod(生產)兩種環境,主要是儲存*-local檔案的模板。在使用init命令時,就會根據這裡面的檔案來產生*-local檔案,然後新成員在檔案中填上自己的資料庫帳號密碼就可以使用了。
以上團隊環境詳細說明可以看這裡:深入理解Yii2.0--環境和設定檔,說的非常詳細。
三、配置完成後就可以,還是會報錯,但不是報資料連結的錯誤了,而是user表沒有找到。那我們就建立user表。Yii2進階版架構中user表已經寫好了,可以開啟console/migrations下有*_init.php檔案,這個就是寫好的user表。只需在cmd中Yii2根目錄下運行命令:
yii migrate
這樣user表就建立好了。這時訪問前後台都OK了。migrate命令是Yii架構遷移或者修改資料庫的工具,尤其的在團隊協作中,如果成員在本地電腦上增加了一張表,如何告知其它成員呢,用yii migrate/create命令就可在console/migrations建立一個改動,然後就增加的表內容寫在裡面,提交後其它成員更新後,用yii migrate命令,即可將自己的資料庫同步到最新的,絕對是十分方便。migrate功能還很多,自己也沒完全弄清楚呢,可能在下面的前後台分離章節中還會說。
四、順便說下配置郵箱吧。完成前三步功能時,就可以註冊個會員看看,當忘記密碼時,則在登入介面點擊忘記密碼,需要通過郵件來找回,所以我們需要配置下郵箱:
Yii2進階版架構中是整合了郵箱類的,在common/config/main-local.php檔案可以看到:
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail',],
這就是相關的設定檔,之所以放到*-local檔案中,因為包含個人帳號的敏感資訊。
上面的配置資訊是不全的,需要填寫發件郵箱,連接埠號碼什麼的,所以修改上面為:
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.163.com', //我這裡用163郵箱 'username' => '你的郵箱名', 'password' => '你的郵箱密碼', 'port' => '25', 'encryption' => 'tls', ],
//'messageConfig'=>[ // 'charset'=>'UTF-8', // 'from'=>['你的郵箱名'=>'robot'] //], ],
而發送郵件的整個流程方法在Yii2進階版中都寫好了,所以只需要配置就能發送了。
配置完上方後,可能找回密碼發送郵件是應該還會報錯,類似這種:
Expected response code 250 but got code "553", with message "553 Mail from must equal authorized user
這是因為有些郵件伺服器要求from和username必須一直,例如網易的伺服器,而在frontend/models/PasswordResetRequestForm.php中的sendEmail方法規定在63行左右,
->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name . ' robot'])
From是取得supportEmail參數,這個參數在common/config/params.php中定義了預設為:admin@example.com,設定檔中的郵箱名和這個不符合所以報錯。方法一是把這個參數改成‘你的郵箱名’就可以正常發送了;方法二是將上方設定檔messageConfig注釋的取消,然後->setFrom這行刪除掉。(所有的這些首先確保先開通smtp服務)
順便說下,因為你郵箱配置實在*-local檔案中,所以為了其它成員也都能用你這個配置,應該在environments/dev/common/main-local.php中添加:
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => '', //空著,讓其他人自己填寫 'username' => '', 'password' => '', 'port' => '', 'encryption' => 'tls', ], 'messageConfig'=>[ 'charset'=>'UTF-8', 'from'=>[''=>'robot'] ], ],
這樣,其他人只需要填上自己的郵箱帳號就可以發送郵件了。
很多時候郵件填寫都是從資料庫擷取的,這時候就不應該在設定檔中了,而是應該單獨寫個類,(類似建立components檔案並引入,寫在這裡面),順便封裝下發送方法。我自己也沒實習過,只是思路而已。
以上就是Yii2進階版的初始化,下節可能記錄下如何套用好看的後台介面和gii自訂模板什麼的。睡覺了先。
http://www.bkjia.com/PHPjc/1114011.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1114011.htmlTechArticleYii2的相關學習記錄,初始化Yii2(二),初始化yii2 前面已經將Yii2下載下來了,那我們就需要能實際的使用。 一、初始化,因為我都是在...