繼控制器與視圖交互,本篇將講解如何自定義全局函數,以及使用yii自帶的用戶注冊登錄功能
全局函數
有時候我們希望自定義一些函數,可以在全局中調用,如php默認的var_dump在頁面上的顯示效果並不好,尤其是多層級數組的情況下,一大坨數據很難分辨。對此,yii提供了VarDumper助手,可以輸出美觀易讀的信息,只是調用較為繁瑣,為了開發的體驗更流暢,可以自定義全局函數,將常用的功能封裝,便於調用。
首先,新建common/functions.php
<?php
use yii\helpers\VarDumper;
function dd($data, $exit = 0)
{
VarDumper::dump($data, 10, true);
if ($exit) {
exit;
}
}
在應用入口文件frontend/web/index.php引入:
require __DIR__ . '/../../common/functions.php';
這樣,就能進行全局調用了:
frontend/controllers/SiteController.php
public function actionIndex()
{
dd(Yii::$app, 1);
return $this->render('index');
}
訪問:http://frontend.test/index.php?r=site/index

url美化
默認情況,url規則是:http://****/index.php?r=控制器名/方法名,這種形式對於SEO並不友好,yii提供了url美化組件,調用相當簡單,只需要進行以下設置:
frontend/config/main.php
'urlManager' => [
'enablePrettyUrl' => true, // 美化url
'showScriptName' => false, // 隱藏index.php
'rules' => [
],
],
開啟url美化后,原來的url形式不再支持,訪問: http://frontend.test/index.php?r=site/index 並不生效,必須以這種形式:http://frontend.test/site/index
用戶的注冊登錄
yii默認提供了用戶的注冊、登錄、退出功能。只需要簡單的幾步配置,就可以完成整個流程。
首先,配置數據庫:
common/config/main-local.php
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
在本地創建yii2advanced數據庫
然后,創建用戶表。yii默認提供了user用戶表的表結構,我們只需要使用migrate生成即可:
在終端執行:php yii migrate

程序自動創建了user表

接下來將之前設置的默認路由恢復為默認的site控制器
在common/config/main.php, 將前面課程設置的 'defaultRoute' => 'index',刪除
接着,刪除frontend/controllers/SiteController.php的調試代碼
最后,進入注冊頁面:http://frontend.test/site/signup

密碼設置為:password
注冊成功后返回主頁

小結
本篇示范了如何用yii框架自帶的用戶注冊登錄功能。懂得怎么用是很簡單的事,要了解其中的原理,就需要下功夫,從下節開始,我將介紹如何用yii框架快速構建表單,並進行數據驗證,熟悉這些后,相信你也會驚嘆於yii的高效便捷。
