我實現了一個驗證碼類型,殭屍程序檢查在哪裏,而不是讓用戶填寫令人討厭的捕獲,我們創建一個名爲password_confirm的隱藏字段,然後當檢查發佈的變量,如果它包含一個值將發生錯誤。在Yii中實施強制空驗證?
我已經閱讀,顯然最好在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;
但是在註冊之後,它沒有顯示除應用程序日誌以外的任何內容。這裏可能有很多問題,我爲這個令人費解的問題感到抱歉。
'你不能看到,或者正常填寫!'正確,所以我的機器人將被欺騙填補領域,但普通用戶不會。因此,當它被填滿時,我知道它是一個機器人。 – surfer190
你想填補或不填?決定男人:D。你說如果沒有正確填寫,你想顯示錯誤? – tinybyte
錯誤,閱讀'如果它包含一個值將出現錯誤。' – surfer190