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

來源:互聯網
上載者:User
這篇文章主要介紹了關於yii實戰之控制器與視圖互動,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

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

預設控制器

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

public function actionIndex(){    return "你是不是預設的控制器? 如果是,就輸出來";    return $this->render('index');}
注意:方法名的命名要用action為首碼,且用駝峰法

瀏覽器結果:

預設控制器是由defaultRoute這個屬性控制的,源碼在:\yii\web\Application::$defaultRoute,可以在設定檔中指定自訂的預設控制器

common/config/main.php新增:

'defaultRoute' => 'index',

此時,再訪問首頁,會報404錯誤:

因為我們指定預設控制器為index,卻沒有建立相應的檔案,接下來我們用yii的gii組件組建控制器檔案。

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

可以看到,程式自動為我們產生了frontend/controllers/IndexController.phpfrontend/views/index/index.php兩個檔案

此時,再重新整理網頁,就能正常訪問了

查看gii更多用法可以執行:php yii help gii

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>

頁面顯示效果:

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.