【问题标题】:Yii - Ajax Form with validationsYii - 带有验证的 Ajax 表单
【发布时间】:2012-01-12 07:26:23
【问题描述】:

我是 Yii 新手,遇到以下问题。

我有一个类似于管理员后台表单的表单。它将有大量按钮,每个按钮在控制器类中都有自己的“动作”。现在我要做的就是根据“场景”验证表单元素,并在未正确填写操作所需的所有参数时显示适当的错误消息。

谁能告诉我如何在不重新加载页面的情况下做到这一点?

[我找到了一种方法,但我不知道我所做的是否“技术上”正确。对于我想在表单中执行的所有操作,我都有提交按钮,并且在相应的操作中,我执行验证并返回部分表单数据。每个按钮的 OnSuccess 将整个“form-div”的数据替换为从控制器返回的数据。它有效,但我想知道这是否是实现这一目标的唯一方法。]

【问题讨论】:

  • 在模型中定义所需的场景。然后在每个操作中指定您的场景,例如$model->scenario = 'name';,然后调用$model->validate();
  • 是的,我已经完成了所有这些。当我在 firebug 中看到结果时,我看到响应 HTML 设置了错误标志等,但我的显示没有反映这一点。我无法找出原因!

标签: ajax validation yii


【解决方案1】:

您应该启用 CActiveFom ajaxformvalidation 属性为 true 参见以下示例

在您的控制器操作中
您应该取消注释以下行

$this->performAjaxValidation($model);

在你看来

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

【讨论】:

  • 很抱歉,我在任何地方都找不到 $this->performAjaxValidation($model) 行。我需要在默认操作中添加它还是我遗漏了什么?
  • 在控制器操作中转到actionCreate()。在那里你可以得到$this-&gt;performAjaxValidation($model)。这行代码在comment那里制作。你必须在uncomment那里制作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
相关资源
最近更新 更多