yii實戰之控制器與視圖交互

繼上篇yii實戰之初見端倪,本篇將講解控制器和視圖的基礎用法。並構建一我的物列表頁面php

默認控制器

默認狀況下,當瀏覽器請求http://frontend.test/時,實際上訪問的是frontend/controllers/SiteController.phpactionIndex方法,咱們在這個方法斷點測試下:css

public function actionIndex()
{
    return "你是否是默認的控制器? 若是是,就輸出來";
    return $this->render('index');
}
注意:方法名的命名要用action爲前綴,且用駝峯法

瀏覽器結果:程序員

默認控制器

默認控制器是由defaultRoute這個屬性控制的,源碼在:\yii\web\Application::$defaultRoute,能夠在配置文件中指定自定義的默認控制器web

common/config/main.php新增:bootstrap

'defaultRoute' => 'index',

此時,再訪問主頁,會報404錯誤:數組

404報錯

由於咱們指定默認控制器爲index,卻沒有建立相應的文件,接下來咱們用yii的gii組件生成控制器文件。瀏覽器

打開終端,進入根目錄,執行:php yii gii/controller --controllerClass=frontend\\controllers\\IndexController --viewPath=@frontend/views/indexfrontend

gii生成控制器

能夠看到,程序自動爲咱們生成了frontend/controllers/IndexController.phpfrontend/views/index/index.php兩個文件yii

此時,再刷新網頁,就能正常訪問了工具

查看gii更多用法能夠執行:php yii help gii

gii help

gii是yii的代碼自動生成工具,能夠在web頁面生成,也能夠在命令行生成,程序員大多更偏心於命令行。如今不太清楚用法,也不要緊,先了解有這個功能,後續會單獨講解gii

構建人物列表頁面

控制器構建數據

在Index控制器中,咱們要構建一個簡易的人物列表,效果以下:

  • 控制器將人物列表數據傳送給視圖文件
  • 視圖文件將數據用表格顯示

首先,在frontend/controllers/IndexController.php定義人物數組, 並將數組傳送給視圖

public function actionIndex()
{
    $people = [
        ['name' => '曹操', 'saying' => '寧教我負天下人,不教天下人負我'],
        ['name' => '劉備', 'saying' => '備如有基業,天下碌碌之輩,誠不足慮也。'],
        ['name' => '關羽', 'saying' => '此等小輩,如同土雞瓦狗,插標賣首爾'],
        ['name' => '張飛', 'saying' => '我乃燕人張翼德,誰敢與我決一雌雄'],
    ];
    return $this->render('index', ['people' => $people]);
}

render第一個參數爲視圖文件名稱,默認路徑爲:當前應用/views/控制器名稱/視圖名稱,對應的路徑即爲:frontend/views/index/index.php;第二個參數是控制器要傳送給視圖的數據。

視圖渲染數據

yii的視圖默認支持bootstrap,所以咱們用bootstrap的語法展現數據:

frontend/views/index/index.php

<table class="table table-bordered table-hover">
    <caption>三國人物名言</caption>
    <thead>
        <tr>
            <th>人物</th>
            <th>名言</th>
        </tr>
    </thead>
    <tbody>
    <?php foreach ($people as $v) :?>
        <tr>
            <td><?=$v['name']?></td>
            <td><?=$v['saying']?></td>
        </tr>
    <?php endforeach;?>
    </tbody>
</table>

頁面顯示效果:

人物列表

小結

本節簡單的演示了控制器跟視圖的交互,下節將講解yii自帶的user組件,實現用戶的註冊、登陸、退出功能,敬請關注...

相關文章
相關標籤/搜索