2012-01-12 108 views
0

我是Yii新手,我有以下問題。Yii - Ajax表單驗證

我有一個表單將會像一個管理後端形式。它將有大量的按鈕,每個按鈕在控制器類中都有自己的「動作」。現在我要做的就是根據「場景」驗證表單元素,並在操作所需的所有參數沒有正確填寫時顯示相應的錯誤消息。

有人能告訴我如何在沒有我重新加載頁面的情況下做到這一點嗎?

[我已經找到了一種方法,但我不知道我在做什麼是「技術上」正確的。我已經提交了表單中要執行的所有操作的按鈕,並且在各自的操作中,我執行驗證和呈現部分表單數據。每個按鈕的OnSuccess將用控制器反饋的數據替換整個「form-div」的數據。它的工作原理,但我想知道這是否是實現這一目標的唯一途徑。]

+0

在模型中定義所需的場景。然後在每個動作中指定你的場景,比如'$ model-> scenario ='name';'然後調用'$ model-> validate();' – 2012-01-12 07:46:44

+0

是的,我已經完成了所有這些。當我在firebug中看到結果時,我看到響應HTML有錯誤標誌等設置,但是我的顯示不反映這一點。我無法找出原因! – 2012-01-12 07:49:57

回答

1

您應該啓用CActiveFom ajaxformvalidation屬性爲true看到你的控制器動作下面的例子


您應該取消註釋以下行

$this->performAjaxValidation($model); 

在你看來

<?php 
    $form = $this->beginWidget('CActiveForm', array( 
       'id' => 'test-form', 
       'enableAjaxValidation' => true, 
      )); 
?> 
+0

我很抱歉,但我無法在任何地方找到$ this-> performAjaxValidation($ model)行。我是否需要在默認操作中添加它,或者我是否錯過了某些內容? – 2012-01-13 05:59:32

+1

在控制器動作中,進入'actionCreate()'。在這裏你可以得到'$ this-> performAjaxValidation($ model)'。這行代碼在那裏做了'comment'。你必須在那裏做'取消註釋'。 – NewUser 2012-06-27 03:57:58