程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP開發框架Yii Framework教程(11) UI組件 ActiveForm示例

PHP開發框架Yii Framework教程(11) UI組件 ActiveForm示例

編輯:PHP綜合

前面在介紹Yii Framework 開發教程(7) 使用CHtml 創建Form和Yii Framework 開發教程(8) 使用FormModel 已經對 CActiveForm做了簡要的介紹。過幾天就是聖誕節了,這裡幫助聖誕老人做個調查表,調查每個人希望得到的聖誕節禮物和聖誕 大餐想吃的食品:-)。

這裡共享一部分代碼,做為後續例子的框架,基本上是復制Hello World的例子,添加了一個空 的DataModel,使用缺省的Controller(SiteController)和缺省的Action(actionIndex),使用缺省的配置文件,代碼下載。

通過HTML表單收集用戶數據是Web程序開發的主要工作之一。除了表單設計外, 開發者還需要將現存的或默認的數據填 充到表單,驗證用戶輸入, 對無效的輸入顯示適當的錯誤信息,保存輸入到持久性存儲器。Yii通過其 MVC 結構極大地簡化了 此工作流程。

在 Yii 中處理表單時,通常需要以下步驟:

創建用於表現所要收集數據字段的模型類。

創建一 個控制器動作,響應表單提交。

在視圖腳本中創建與控制器動作相關的表單。

創建DataModel

class 

DataModel extends CFormModel     
{     
    public $firstName;     
    public $lastName;     

    public $favouriteGift;     

    public $favouriteDinner;     

    public function rules()     
    {     
        return array(     
            array('firstName, lastName', 'required'),     
            array('favouriteGift,favouriteDinner', 'safe')     
         
            );     
    }     

    static $gifts=array(     
        '1'=>'iPad',     
        '2'=>'Remote control helicopter',     
        '3'=>'60 inch 3D LED TV',     
        '4'=>'Holy Bible',     
        );     

    static $meals=array(     
        '1'=>'Egg',     
        '2'=>'Ham',     
        '3'=>'Chicken',     
        '4'=>'Pork',     
        '5'=>'Beer',     
        '6'=>'Coke',     
        '7'=>'Wine',     
        );     
}

firstName,lastName 用於記載用戶姓名,$favouriteGift和$favouriteDinner 記載用戶的禮物和食品名稱。 $gifts,$meals靜態定義了可供用戶選擇的禮物種類和食品種類。這裡要注意的是firstName,lastName是必填的,而 $favouriteGift和$favouriteDinner 設為可以安全復制的,這些由Model的rules來定義。

定義Action

修改 SiteController 的Action方法:

public function actionIndex()     
{     
         
    $model=new DataModel();     

    if(!emptyempty($_POST['DataModel']))     
    {     
        $model->attributes=$_POST['DataModel'];     
         
        if($model->validate())     
        {     
            $this->render('choice', array(     
                'model' => $model,     
         
                ));     
            return;     
        }     
         
    }     
         
    $this->render('index', array(     
            'model' => $model,     
         
            ));     
}

這裡定義了兩個View,index 用於獲取用戶輸入,choice 顯示用戶選擇結果。$model->attributes=$_POST ['DataModel']; 正如我們在 安全的特性賦值 中所講的, 這行代碼使用用戶提交的數據填充模型。 attributes 屬性 由 CModel定義,它接受一個名值對數組並將其中的每個值賦給相應的模型特性。

定義View

首先是定義index.php ,本例使用CActiveForm,CActiveForm同時提供客戶端及服務器端無縫的、一致的驗證。

<?php $form = $this-

>beginWidget('CActiveForm', array(     
    'id'=>'user-form',     
    'enableAjaxValidation'=>true,     
    'enableClientValidation'=>true,     
    'focus'=>array($model,'firstName'),     
)); ?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved