這篇文章主要介紹了關於Yii之目錄結構、入口檔案及路由設定,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
本文從YII的目錄結構開始分析,到入口檔案分析,到路由設定詳解,視圖詳解,十分全面的向我們展示了YII架構的方方面面,是篇非常不錯的文章,這裡推薦給大家。
項目名稱從“FantaCMS”修改成為“testyii”—————— 俗!
1,項目目錄結構分析
2,Yii入口檔案分析
在Yii啟動項目時,傳遞了項目主設定檔數組,那麼Yii會在整個應用中綁定一個全域的Yii對象並且可以通過如下方法來調用該對象:Yii::app()
Yii系統把設定檔中的數組值,通過索引值對的形式綁定到了該對象上,例如在設定檔中我們配置了:
'name'=>'My Web Application',
那麼我們在項目的任何一個地方通過該對象的屬性就可以擷取到“name”的值,方法為:
Yii::app()->name;
3,Yii路由設定
同時應該知道:對於控制器名,Yii首先會檢測當前的控制器名是否是一個“模組名”,如果是模組名則先定位到模組。
“模組”會在後面搭建項目的時候解釋。
通過上面的路由訪問到的就是:SiteController.php類檔案下的SiteController類中的actionIndex方法
控制器檔案位於:protected/controllers 目錄下,也就是我們的控制器檔案存放目錄
注意Yii中控制器檔案和動作方法名的書寫方式,控制器有統一的尾碼”Controller“,動作方法也有統一的首碼”action“,同時要求動作方法名的命名規範符合”除第一個單詞外其它每個單詞的首字母要大寫“
由於Yii預設的控制器名為:site
預設的動作名為:index
因此上述通過指定控制器名動作名訪問的路徑和直接存取:http://localhost/testyii/ 的效果是一致的
4,視圖調用
在動作方法中,調用:$this->render('index');
來為對應的動作方法指定視圖檔案,視圖檔案位於:protected/views/site 目錄下
其中:site為對應的控制器名檔案夾,每個控制器名在視圖中都應該具有一個唯一的檔案夾名與其相對應
然後在動作方法中通過‘index'來指定顯示的具體視圖檔案是site控制器下的指定的‘index.php'視圖檔案
另外還需要注意:
調用視圖的方法有兩個:
$this->render ----> 會調用模板檔案
和
$this->renderPartial -----> 不會調用模板檔案
它們之間的區別,也如上所述。
5,視圖模板設定
開啟SiteController.php檔案,其中的代碼如下:
我們發現:Yii應用中,每個控制器都要繼承自公用控制器“Controller”
然後開啟“Controller”控制器檔案:Controller.php,它位於:protected/components 目錄下
“Controller”控制器代碼如下:
Yii通過:public $layout='//layouts/column1'; 來指定動作方法的公用模板檔案
公用模板檔案位於:protected/views/layouts 目錄下,如:
現在我們來建立我們的模板檔案:testlayout.php,代碼如下:
其中”<?php echo $content; ?>“為Yii中規定的模板檔案中的內容替換方法
然後,修改 ”Controller“控制器中的模板檔案為:public $layout='//layouts/testlayout';
然後訪問:http://localhost/testyii/index.php?r=site/index 結果
然後我們發現,模板檔案已經變成我們自己指定的了,然後假如你不需要視圖檔案渲染模板檔案,那麼你可以在動作方法中調用視圖檔案的時候使用:$this->renderPartial 方法
或者你整個項目都不需要調用模板檔案,那麼你可以在動作方法中調用視圖檔案時全部用:$this->renderPartial
也或者將視圖模板檔案設定為”空“,例如:public $layout='';
下一節繼續:Yii的魔術師:gii,Yii模組及模組自訂