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']  
    ],             
],        

這樣,其他人更新時只需init命令一下,然后要填上自己的郵箱賬號就可以發送郵件了。

很多時候郵件填寫都是從數據庫獲取的,這時候就不應該在配置文件中了,而是應該單獨寫個類,(類似新建components文件並引入,寫在這里面),順便封裝下發送方法。我自己也沒實現過,只是思路而已。

以上就是Yii2高級版的初始化,下節可能記錄下如何套用好看的后台界面和gii自定義模板什么的。睡覺了先。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM