PHP动态验证,php-动态更改验证规则
我正在處理包含用戶數據,特別是電話號碼字段的表單.通常不需要電話號碼,因此模型中唯一的驗證規則是usphone規則.但是,如果用戶正在提交此表格,則電話號碼變得必不可少.我以為我可以在運行中簡單地添加驗證規則,設置模型并調用validates方法,但是我做錯了或者沒有按我預期的方式工作.
在我的控制器中:
# Update a few validation rules that are specific to this context
$this->Proposal->Requestor->validate['phone_number']['notempty'] = array(
'rule' => 'notEmpty',
'message' => 'Please enter a phone number so can can contact you with any questions about the work.',
'allowEmpty' => false,
'required' => true,
);
$validationErrors = array();
$this->Proposal->Requestor->set( $this->data['Requestor'] ); # $this->data['Requestor']['phone_number'] only (no other requestor data)
if( !$this->Proposal->Requestor->validates( array( 'fieldList' => array( 'phone_number' ) ) ) ) {
$validationErrors['Requestor'] = $this->Proposal->Requestor->validationErrors;
}
即使我將電話號碼字段留空,也不會報告任何錯誤.在這種情況下,我向用戶請求的唯一信息是他們的電話號碼,因此其余的請求者數據為空,但是我嘗試合并其余的用戶數據,但得到的結果相同.如果刪除fieldList選項,則會在其他字段上收到錯誤消息,但空電話號碼上仍然沒有任何提示.
知道我在這里缺少什么嗎?我已經忙了好幾個小時了,只是找不到正確的答案.
謝謝.
解決方法:
解決方案最終是雙重的:
>我在phone_number字段上已有規則,將值強制為美國電話號碼.該規則還將allowEmpty設置為true,并且將false設置為false.我想捕獲一個空值,以便顯示特別精確的消息.
>我必須更新現有規則以翻轉allowEmpty和必需值,還必須添加一個新規則,其最后一個值設置為true.
添加到我的控制器操作中的最終更改如下所示:
$this->Proposal->Requestor->validate = Set::merge(
$this->Proposal->Requestor->validate,
array(
'phone_number' => array(
'notempty' => array(
'rule' => 'notEmpty',
'message' => 'Please enter a phone number so can can contact you with any questions about the work.',
'allowEmpty' => false,
'required' => true,
'last' => true,
),
'usphone' => array(
'allowEmpty' => false,
'required' => true,
),
)
)
);
我不記得我是否驗證過,鑒于新規則的最后一個值,對現有的usphone規則進行更改絕對是必要的,但是這種組合可以正常工作.
標簽:cakephp-1-3,cakephp,php
來源: https://codeday.me/bug/20191202/2086533.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的PHP动态验证,php-动态更改验证规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android代理生命周期,了解 Act
- 下一篇: php接收二进制流,php接收二进制流【