【发布时间】:2014-01-11 10:43:12
【问题描述】:
我正在实现一种验证码类型,机器人检查在哪里而不是让用户填写烦人的捕获,我们创建一个名为 password_confirm 的隐藏字段,然后在检查发布的变量是否包含值时会出错。
我已经阅读过,显然最好在 beforeValidate() 事件处理程序中实现,而不是创建新的验证规则。
但是我不确定如何停止该过程以及如何在必要时返回错误消息,因为当您调用 validate() 时,它将清除所有现有的错误消息。
也不太确定我们是否可以使用场景来设置它,所以只有在注册场景中才适用。
在窗体小部件中:
<div class="row">
<?php echo $form->hiddenField($model, 'password_confirm'); ?>
<?php echo $form->error($model,'password_confirm'); ?>
</div>
在 FormModel 中:
class LoginForm extends CFormModel
{
public $password_confirm;
...
protected function beforeValidate()
{
if(empty($this->password_confirm))
{
return false;
}
else
{
return parent::beforeValidate();
}
}
我得到一个未定义属性的错误:所以我添加到用户模型中:
public $password_confirm;
但是注册之后,除了应用程序日志什么都没有显示。这里可能有很多问题,我很抱歉这个令人费解的问题。
【问题讨论】: