【问题标题】:Yii - Textfield validation not workingYii - 文本字段验证不起作用
【发布时间】:2013-11-29 10:22:38
【问题描述】:

我是 Yii 框架的新手。现在我为min sizemax size 使用两个文本字段。现在这个文本字段应该只接受整数。但他们也在使用字母表。我在模型文件中使用了以下规则。

 public function rules() {
return array(
    array('min_size, max_size', 'numerical', 'integerOnly'=>true));
    }

但这似乎不起作用,没有显示错误。如何通过在输入文本时显示错误来成功验证。我应该对 main.php 进行一些更改

【问题讨论】:

  • 确保你的数据库有这些字段或者你已经在模型中声明了它们,我们可以看到你的表单这些字段在哪里吗???还要检查控制台,如果没有 jquery 冲突。
  • @Coderanonymous 该字段不是从db中检索的,它们是形成一个xml并从xml中检索的
  • 所以在模型中声明它们,并验证,显示你的表单..
  • @Coderanonymous 形式为<?php echo $form->textField($model,'min_size', array('placeholder' => 'Min Sqft', array('integerOnly'=>'true')); ?><?php echo $form->textField($model,'max_size', array('placeholder' => 'Min Sqft', array('integerOnly'=>'true')); ?>
  • <?php echo $form->error($model,'min_size'); ?><?php echo $form->error($model,'max_size'); ?> 你的代码中有这个吗?

标签: php yii


【解决方案1】:

在你的代码中寻找这种形式

<?php
    $form = $this->beginWidget('CActiveForm', array(
        'id' => 'trip-form',
        'enableAjaxValidation' => true,
        'enableClientValidation' => true,
    ?>

如果您希望进行 ajax 验证,则此行必须在控制器中取消注释

 $this->performAjaxValidation($model);

客户端验证将自动进行

【讨论】:

  • 我在控制器的任何地方都看不到这条线
  • 这一行出现在表单的声明中
【解决方案2】:

尝试添加这个而不是那个

if (isset($_POST['ajax']) && $_POST['ajax'] === "your_form_id") {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }

这将在收到 ajax 请求时与模型进行检查

【讨论】:

  • 我应该在控制器的哪里添加这个,在任何函数中或什么
  • 将此添加到表单呈现的操作中
  • 没有验证没有发生。现在,我添加了 ajaxvalidation 功能,我正在尝试
  • if (isset($_POST['ajax']) &amp;&amp; $_POST['ajax'] === "yw0") { echo CActiveForm::validate($search_model); Yii::app()-&gt;end(); }...没有用
  • 这只是一个数字验证,不需要ajax验证就可以工作??让我知道客户端验证是否有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
相关资源
最近更新 更多