Yii2的相關學習記錄,初始化Yii2(二),初始化yii2_PHP教程

來源:互聯網
上載者:User

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下載下來了,那我們就需要能實際的使用。 一、初始化,因為我都是在...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.