首頁  >  文章  >  後端開發  >  Yii框架官方指南系列18-使用表單:建立動作

Yii框架官方指南系列18-使用表單:建立動作

黄舟
黄舟原創
2017-02-13 09:12:161025瀏覽

有了模型,我們就可以開始編寫用於操作此模型的邏輯了。 我們將此邏輯放在一個控制器的動作中。將登入表單的範例來講,對應的程式碼是:

public function actionLogin()
{
    $model=new LoginForm;
    if(isset($_POST['LoginForm']))
    {
        // 收集用户输入的数据
        $model->attributes=$_POST['LoginForm'];
        // 验证用户输入,并在判断输入正确后重定向到前一页
        if($model->validate())
            $this->redirect(Yii::app()->user->returnUrl);
    }
    // 显示登录表单
    $this->render('login',array('model'=>$model));
}

如上所示,我們先建立了一個 LoginForm 模型範例; 如果請求是一個POST 請求(表示這個表單表示這個表單被提交了),我們則使用提交的資料 $_POST['LoginForm'] 填充 $model ;然後我們驗證此輸入,如果驗證成功,重定向用戶瀏覽器到之前需要身份驗證的頁面。 如果驗證失敗,或此動作初次訪問,我們則渲染 login 視圖,此視圖的內容我們在下一節中講解。

提示: 在 login 動作中,我們使用 Yii::app()->user->returnUrl 獲取之前需要身份驗證的頁面URL。 元件 Yii::app()->user 是一種 CWebUser (或其子類別) ,它表示使用者會話資訊(例如 使用者名,狀態)。更多詳情, 請參考 驗證與授權.

讓我們特別留意一下 login 動作中出現的下面的PHP 語句:


的, 這行程式碼使用使用者提交的資料填充模型。 

attributes

 屬性由 CModel定義,它接受一個名值對陣列並將其中的每個值賦給對應的模型特性。 因此如果 

$_POST['LoginForm']

 給了我們這樣的一個數組,上面的那段程式碼也就等同於下面冗長的這段(假設數組中存在所有所需的特性):

$model->attributes=$_POST['LoginForm'];


注意:

 為了使 

$_POST['LoginForm']
 傳遞給我們的是一個陣列而不是字串, 我們需要在命名表單域時遵守一個規範。特定的,對應於模型類別 

C 中的特性 a 的表單域,我們將其命名為 C[a] 。例如,我們可使用 LoginForm[username] 命名 username 特性對應的表單域。 現在剩下的工作就是創建 login 視圖了,它應該包含一個帶有所需輸入項目的 HTML 表單。

以上就是Yii框架官方指南系列18——使用表單:創建動作的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn