Yii 1.1.17 一、安裝、目錄結構、視圖、控制器、擴展自定義函數


這幾天了解了一下Yii框架,以簡單的博客項目實戰入門。大致的實現流程做個記錄。

 

一、Yii 安裝與環境檢測

從 www.yiiframework.com 獲取一份Yii的拷貝,解壓到 /wwwroot/yii 目錄

打開瀏覽器訪問 http://127.0.0.1/yii/requirements/index.php,檢測本地環境支持。

 

二、建立項目與目錄介紹

在命令行環境,cd命令進入到 Yii 框架核心目錄 /wwwroot/yii/framework ,鍵入命令行: php yiic webapp ../blog (注意:確保php.exe的路徑配置到環境變量)

回車后,得到一條確認提示,yes 確定即可。這時在 yii 目錄下有了blog 目錄,結構如下:

assets: 公共資源目錄,存放JS,CSS,圖片資源等等
protected:書寫MVC代碼的主要目錄 
themes:主題目錄
uploads:這個是我自己添加的圖片上傳目錄
.htaccess: 用於Apache重寫
index-text.php:功能測試的入口文件,沒用 
index.php:單入口文件

 

三、設置默認控制器與載入模板

 1、創建控制器

class IndexController extends Controller{
  public function actionIndex() {
    //...
  }
}

訪問:index.php?r=index/index

r是 route 路由的縮寫,/ 分隔 index 控制器和 index 方法

 

2、配置默認控制器

默認訪問:控制器SiteController下面的actionIndex方法

 

Config/main.php是主配置文件,在其中加入:

'defaultController' => 'Index',

 

3、載入視圖

在控制器方法中,有兩個方法可以加載視圖:

$this->render();         // 會加載布局文件
$this->renderPartial();  // 不會加載布局文件(也不能加載框架自帶的jQuery等)

 方法中傳遞視圖文件名(YII 1.1.17 中的控制器方法名以 "action" 為前綴,比如 "actionIndex" )

 

在視圖目錄:

根據控制器名字建立文件夾,里面的文件名是 render 或者 renderPartial 方法傳遞的名字

例如:

控制器是 Index ,則需要建立 Index 文件夾,在 Index 文件夾下建立 index.php 文件,然后渲染視圖

$this->render('index');
// 或者
$this->renderPartial('index');

 

四、布局介紹

1、什么是局部

在 views/layouts 下面的文件是布局文件(有每個模板的公共區域),用 render() 方法渲染視圖時會自動加載的文件

 

修改步驟:

  • views/layouts下面的,新建布局文件
  • 修改默認布局文件:

位置:  components/Controller.php ,基類控制器

修改屬性, public $layout = '//layouts/column1';

這表示使用 protected/views/layouts/column1.php 文件作為默認的布局文件

 

2、布局內容

舉個栗子就明白了,比如,一張 html 網頁:

上面是公用頭部 html:一般是頂欄,logo, 導航欄等等

中間左側的主內容依照不同的網頁有不同的內容,使用 <?php echo $content; ?> 

中間右側是側欄 html

尾部是公用尾部 html:一般是版權信息等等

 

五、載入外部文件

CSS與Js等資源文件放入assets里面,按照前后台目錄分開

Yii::app()->request->baseUrl;可以獲取請求的基礎路徑

例如: <?php echo Yii:app()->request->baseUrl; ?>/assets/index/css/index.css  將得到一個紙箱前台首頁的 css 文件 url

 

Yii::app() 返回的是在index.php入口里創建的CWebApplication實例。在一次請求處理過程中,這是唯一的實例

Yii::app() 主要負責一些全局性的功能模塊。

 

六、分配變量並在視圖中調用

1、控制器分配變量

$data = array(
  'articleList' => $articleList,
  'page' => $page
);
$this->render('index', $data);

2、視圖中調用變量

<?php foreach($article as $v): ?>
  <li><?php echo $v->title; ?></li>
<?php endforeach; ?>

 

七、擴展自定義函數

在protected目錄下建立function.php文件

 

在單入口中引入,

require_once('./protected/function.php');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM