2017-11-11 134 views
0

我有這樣一個驗證規則,有產生驗證錯誤消息將不會在形式展現一年

$validator->add('cc_expires',[ 
       'checkExpiryDate'=>[ 
       'rule'=>'checkExpiryDate', 
       'provider'=>'table', 
       'message'=>__('BS_INVALID_CC_EXPIRY_DATE')]]); 

錯誤信息,但在這個$this->Form->year()控制

echo $this->Form->year('cc_expires', [ 'options' => $year_option,'error' =>true]); 

不會生成錯誤消息我要補充

<?php print_r($order->errors() ['cc_expires'] ['checkExpiryDate']);?> 

打印出錯誤消息,這是醜陋的,

反正是有用於控制$this->Form->year()打印出錯誤消息,謝謝

回答

1

手動打印錯誤應該用FormHelper::error()方法來完成,你可以測試是否存在使用FormHelper::isFieldError()錯誤。

也就是說,像year()這樣的單獨控制方法不會檢查錯誤,它們只會呈現控件。如果你想自動錯誤檢查和顯示,那麼你需要,它包裝任務(CakePHP的3.4之前FormHelper::input())使用FormHelper::control()(該error選項BTW是control()方法的選擇):

echo $this->Form->control('cc_expires', [ 
    'type' => 'year', 
    'label' => false, 
    'options' => $year_option 
]); 

參見