2012-01-12 107 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