YiiFramework 安裝使用教程及文件結構詳解

jopen 10年前發布 | 43K 次閱讀 Web框架 yiiframework

Yii 的安裝由如下兩步組成:

先從 www.yiiframework.com 下載 Yii 框架,將 Yii 壓縮包解壓至一個 Web 可訪問的目錄。

提示: 安裝在 Web 目錄不是必須的,每個 Yii 應用都有一個入口腳本,只有它才必須暴露給 Web 用戶。其它 PHP 腳本(包括 Yii)應該保護起來不被 Web 訪問,因為它們可能會被黑客利用。

 

需求

安裝完 Yii 以后你也許想驗證一下你的服務器是否滿足使用 Yii 的要求,只需瀏覽器中輸入如下網址來訪問需求檢測腳本:

http://localhost/yii/requirements/index.php

Yii 的最低需求是你的 Web 服務器支持 PHP 5.1.0 或更高版本。Yii 在 Windows 和 Linux 系統上的 Apache HTTP 服務器 中測試通過,應該在其它支持 PHP 5 的 Web 服務器和平臺上也工作正常。

 

建立第一個 Yii 應用

請添加PHP環境變量,如果未添加,輸入命令時會提示:'"php.exe"' 不是內部或外部命令,也不是可運行的程序或批處理文件。

在 高級系統設置->系統屬性->高級->環境變量 找到系統變量里的Path,點編輯,在變量值最后面加分號然后加PHP路徑。

例如:

;D:\wamp\bin\php\php5.4.16


打開cmd,切換到yii目錄下

如:D:\wamp\www\yii\framework>

輸入

yiic webapp ../test 

如:D:\wamp\www\yii\framework>yiic webapp ../test

 

輸入命令將會提示在framework上級的yii目錄下創建應用test,輸入yes

Create a Web application under 'D:\wamp\www\yii\test'? (yes|no) [no]:yes

按回車后將會出現如下信息

      mkdir D:/wamp/www/yii/test

      mkdir D:/wamp/www/yii/test/assets

      mkdir D:/wamp/www/yii/test/css

   ......

   ......

   generate themes/classic/views/.htaccess

      mkdir D:/wamp/www/yii/test/themes/classic/views/layouts

      mkdir D:/wamp/www/yii/test/themes/classic/views/site

      mkdir D:/wamp/www/yii/test/themes/classic/views/system

 

Your application has been created successfully under D:\wamp\www\yii\test.

 

這樣第一個應用就建立好了,此時查看應用訪問http://localhost/yii/test/

 

提示:yii這個目錄可以放在任意一個可讀的目錄中,不一定要放在WEB服務器的www下,在實際中,一般將此目錄放在比較安全的地方,如:D:\,創建應用的時候,就可以進入D:\yii\framework>目錄執行

yiic webapp D:\wamp\www\test

如:D:\yii\framework>yiic webapp D:\wamp\www\test


查看應用 

地址欄中輸入:http://localhost/test/ 

正如我們看到的,這個應用包含三個頁面:首頁、聯系頁、登錄頁。首頁展示一些關于應用和用戶登錄狀態的信息,聯系頁顯示一個聯系表單以便用戶填寫并提交他們的咨詢,登錄頁允許用戶先通過認證然后訪問已授權的內容。 查看下列截圖了解更多:

首頁

YiiFramework 安裝使用教程及文件結構詳解

聯系頁

YiiFramework 安裝使用教程及文件結構詳解

輸入錯誤的聯系頁

YiiFramework 安裝使用教程及文件結構詳解

提交成功的聯系頁

YiiFramework 安裝使用教程及文件結構詳解

登錄頁

YiiFramework 安裝使用教程及文件結構詳解

文件結構

   testdrive/
   index.php                 Web 應用入口腳本文件
   index-test.php            功能測試使用的入口腳本文件
   assets/                   包含公開的資源文件
   css/                      包含 CSS 文件
   images/                   包含圖片文件
   themes/                   包含應用主題
   protected/                包含受保護的應用文件
      yiic                   yiic 命令行腳本
      yiic.bat               Windows 下的 yiic 命令行腳本
      yiic.php               yiic 命令行 PHP 腳本
      commands/              包含自定義的 'yiic' 命令
         shell/              包含自定義的 'yiic shell' 命令
      components/            包含可重用的用戶組件
         Controller.php      所有控制器類的基礎類
         Identity.php        用來認證的 'Identity' 類
      config/                包含配置文件
         console.php         控制臺應用配置
         main.php            Web 應用配置
         test.php            功能測試使用的配置
      controllers/           包含控制器的類文件
         SiteController.php  默認控制器的類文件
      data/                  包含示例數據庫
         schema.mysql.sql    示例 MySQL 數據庫
         schema.sqlite.sql   示例 SQLite 數據庫
         testdrive.db        示例 SQLite 數據庫文件
      extensions/            包含第三方擴展
      messages/              包含翻譯過的消息
      models/                包含模型的類文件
         LoginForm.php       'login' 動作的表單模型
         ContactForm.php     'contact' 動作的表單模型
      runtime/               包含臨時生成的文件
      tests/                 包含測試腳本
      views/                 包含控制器的視圖和布局文件
         layouts/            包含布局視圖文件
            main.php         所有視圖的默認布局
            column1.php      使用單列頁面使用的布局
            column2.php      使用雙列的頁面使用的布局
         site/               包含 'site' 控制器的視圖文件
            pages/           包含 "靜態" 頁面
               about.php     "about" 頁面的視圖
            contact.php      'contact' 動作的視圖
            error.php        'error' 動作的視圖(顯示外部錯誤)
            index.php        'index' 動作的視圖
            login.php        'login' 動作的視圖
         system/             包含系統視圖文件


連接到數據庫

大多數 Web 應用由數據庫驅動,我們的測試應用也不例外。要使用數據庫,我們首先需要告訴應用如何連接它。修改應用的配置文件 protected/config/main.php 即可,如下所示:

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString'=>'sqlite:protected/data/testdrive.db',
        ),
    ),
    ......
);

上面的代碼告訴 Yii 應用在需要時將連接到 SQLite 數據庫 protected/data/testdrive.db 。注意這個SQLite 數據庫已經包含在我們創建的應用框架中。數據庫只包含一個名為 tbl_user 的表:

CREATE TABLE tbl_user (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    username VARCHAR(128) NOT NULL,
    password VARCHAR(128) NOT NULL,
    email VARCHAR(128) NOT NULL
);

若你想要換成一個 MySQL 數據庫,你需要建立數據庫,導入文件 protected/data/schema.mysql.sql

 

注意: 要使用 Yii 的數據庫功能,我們需要啟用 PHP 的 PDO 擴展和相應的驅動擴展。對于測試應用來說,我們需要啟用 php_pdo 和 php_pdo_sqlite 擴展。


換成MySQL數據庫

打開protected/config/main.php找到

       'db'=>array(
            'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
        ),

這是默認連接的sqllite,將這段代碼注釋,然后在這行代碼下面找到

 /*
     'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=testdrive',  //dbname是你的數據庫名,
            'emulatePrepare' => true,
            'username' => 'root', //數據庫用戶名
            'password' => '', //數據庫密碼
            'charset' => 'utf8', // 數據庫編碼
            'tablePrefix'=>'tbl_',//這行是我加的,表名前綴
        ),
*/

將這行代碼的注釋去掉,并創建數據庫,導入文件protected/data/schema.mysql.sql


實現 CRUD 操作

我們想要為剛才建立的 tbl_user 表實現 CRUD (create, read, update 和 delete) 操作,這也是實際應用中最常見的操作。我們無需麻煩地編寫實際代碼,這里我們將使用 Gii —— 一個強大的基于Web 的代碼生成器。

    信息: Gii 自版本 1.1.2 可用。在此之前,可以使用 yiic 來實現相同的功能。更多細節,請參考 用 yiic shell實現 CRUD 操作。

配置Gii

為了使用 Gii,首先需要編輯文件 protected/main.php,這是已知的 應用配置 文件:

'modules'=>array(
        // uncomment the following to enable the Gii tool
        /*
        'gii'=>array(
            'class'=>'system.gii.GiiModule',
            'password'=>'你的gii密碼',
            // If removed, Gii defaults to localhost only. Edit carefully to taste.
            'ipFilters'=>array('127.0.0.1','::1'),
        ),
        */
    ),

將里面gii的注釋去掉,并修改密碼。

 

如果碰到這種情況

Error 403

You are not allowed to access this page.

gii是有IP限制的,如果YII是安裝在Linux虛擬機里,訪問時會返回403錯誤,提示沒有權限

遇到這種情況,我們就需要配置gii的ipFilters

'ipFilters'=>array('127.0.0.1','::1','192.168.0.153'),

將IP添加進去,成功的話會提示輸入密碼

 

然后,訪問 URL http://localhost/test/index.php?r=gii。這里我們需要輸入密碼,它是在我們在上面的配置中指定的。

生成 User 模型

登陸后,點擊鏈接 Model Generator。它將顯示下面的模型生成頁面,

YiiFramework 安裝使用教程及文件結構詳解

在 Table Name 輸入框中,輸入 tbl_user。在 Model Class 輸入框中,輸入 User。然后點擊 Preview 按鈕。這里將展示將要生成的新文件。現在點擊 Generate 按鈕。一個名為 User.php 將生成到 protected/models 目錄中。如我們稍后描述的, User 模型類允許我們以面向對象的方式來訪問數據表 tbl_user 。

生成 CRUD 代碼

在創建模型類之后,我們將生成執行 CRUD 操作的代碼。我們選擇 Gii 中的 Crud Generator,如下所示,

YiiFramework 安裝使用教程及文件結構詳解

在 Model Class 輸入框中,輸入 User。在 Controller ID 輸入框中,輸入 user (小寫格式)。現在點擊 Generate 按鈕后的 Preview 按鈕。CRUD 代碼生成完成了。

 

訪問 CRUD 頁面

讓我們看看成果,訪問如下 URL:

http://localhost/test/index.php?r=user

這會顯示一個 tbl_user 表中記錄的列表,如下圖所示。

YiiFramework 安裝使用教程及文件結構詳解

點擊頁面上的 Create User 鏈接,如果沒有登錄的話我們將被帶到登錄頁。登錄后,我們看到一個可供我們添加新用戶的表單。完成表單并點擊 Create 按鈕,如果有任何輸入錯誤的話,一個友好的錯誤提示將會顯示并阻止我們保存。回到用戶列表頁,我們應該能看到剛才添加的用戶顯示在列表中。

 

重復上述步驟以添加更多用戶。注意,如果一頁顯示的用戶條目太多,列表頁會自動分頁。

 

 

點擊頁面上的 Manage User 鏈接,如果我們使用 admin/admin 作為管理員登錄,我們可以在如下 URL 查看用戶管理頁:

http://localhost/test/index.php?r=user/admin

這會顯示一個包含用戶條目的漂亮表格。我們可以點擊表頭的單元格來對相應的列進行排序,而且它和列表頁一樣會自動分頁。

 

實現所有這些功能不要我們編寫一行代碼!

 

用戶管理頁

YiiFramework 安裝使用教程及文件結構詳解

新增用戶頁

YiiFramework 安裝使用教程及文件結構詳解

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!