程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Yii2的相關學習記錄,初始化Yii2(二),初始化yii2

Yii2的相關學習記錄,初始化Yii2(二),初始化yii2

編輯:關於PHP編程

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中定義了默認為:[email protected],配置文件中的郵箱名和這個不符合所以報錯。方法一是把這個參數改成‘你的郵箱名’就可以正常發送了;方法二是將上方配置文件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自定義模板什麼的。睡覺了先。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved