Yii 1.1:表格 - >定义正确的最小规则

时间:2017-11-16 09:04:25

标签: html5 forms validation yii yii1.x

从几小时开始我就试图找出问题所在:

- >我有一个Yii表格看起来像这样:

public function rules()
{
    return array(
        // username and password are required
        array('IBAN, BIC, amount, payment_id, email', 'required'),
        array('payment_id', 'numerical', 'integerOnly'=>true),
        array('email', 'email'),
        array('amount', 'numerical', 'min'=>10)
    );
}

然后我的控制器规则定义如下:

array('amount', 'numerical', 'min'=>10)

我的目标是禁止价值低于' 10'

**我已经尝试了**

  • 真正奇怪的是所有其他规则,例如' required'和错误的电子邮件字段,没有@ letter等。工作真的很棒,所以表单和规则之间的联系正在起作用大。该测试成功

  • 当我尝试输入一封信时,例如" A"进入我的数量字段,我得到imediatley红色HTML5错误(完美,工作也很好)

  • 但是当我尝试输入一个小于10的数字用于检验1 - >然后我没有得到任何错误(第一个奇怪的事情)和下一个大问题是,提交后,我只得到一个空白的白页回来:(

  • 我也在这里添加了这个" enableClientValidation' => true"我的表格代码(也没有成功)

  • 然后我还尝试将一些验证规则直接实现到yii表单元素中 这里:

    $ form-> textField($ model,' amount',array(                                 '类' => '表单控件名称字段',                                 '占位符' => $模型 - > getAttributeLabel('量&#39),                                 '类型' => '数&#39 ;,                                 '分钟' => ' 10'

- >也没有成功!

疯狂的事情是当我删除我的

array('amount', 'numerical', 'min'=>10)

排除我的规则块,提交重定向过程效果很好!但是那时我的数字少于10,因为" min = 10规则"去掉了。 BUT

当我再次将此行添加到我的规则

{{1}}

然后我进入" 1"进入金额字段然后提交表格,yii只显示白页!

所以yii正在认识到,我输入了一个错误的值,但只显示了一个白页

  • 是的,我已经尝试检查日志文件。没有新的进入!!
  • 是的,我也阅读了手册,但我完全按照步骤和方式设定了一些新规则...

我真的不知道问题是什么:(

你能不能给我一些提示?!?

非常感谢您的帮助!

编辑: 好的,我已经发现,问题是在我的控制器中我的     $模型 - >验证() 是不正确的,这就是为什么整个脚本都会被跳过...我会再次检查所有内容,并尽快给出反馈。

1 个答案:

答案 0 :(得分:0)

哦,天啊:)

我找到了我的错误!

事实是,我的规则/验证部分一直在完美地工作!白页凸轮只在我的控制器中有,如果这样的块定义了:

if(validation){
    // do great stuff
}

但没有定义!验证部分,这就是为什么在提交无效值之后,我只得到一个空的白色空白页;)

所以如果将来有人会遇到类似的问题!

检查您的控制器,如果您已定义2个案例

成功案例(验证部分还可以) 错误情况(验证部分无效)

然后您可以重定向到同一页面,让用户知道类似

的内容

“您输入的金额无效。最低金额为10.00 $”

通过设置一些Yii错误并将其显示在用户输入错误金额的文本字段附近的同一页面上...

我现在这样做了:

if($_POST['WithdrawalRequestForm']['amount'] < 10){
                Yii::app()->user->setFlash('error', "Please enter a wihtdraw amount with at aleast 10.00 €");
                $this->redirect('withdrawalRequest');
            }

希望这也有助于其他民族! ;)