cakephp表单验证显示默认消息而不是自定义

时间:2014-09-09 22:24:00

标签: cakephp

在提交表单时,不显示我的自定义验证消息,而是默认"此字段不能留空"正在展示。有什么想法吗?

这是我的验证:

public $validate = array(
        'id' => array(
            'rule' => 'notEmpty'
        ),
        'first_name' => array(
            'rule' => 'notEmpty'
        ),
        'last_name' => array(
            'rule' => 'notEmpty'
        ),
        'accused_of' => array(
            'rule' => 'notEmpty'
        ),
        'last_4_of_ssn' => array(
            'rule' => '/^[0-9]{4}$/', // NEED TO DOUBLE CHECK THIS
            'messsage' => 'Exactly 4 digits'    
        ),
        'date_of_accusation' => array(
            'rule' => array('date', 'ymd'), // NEED TO DOUBLE CHECK THIS
             'message' => 'Date must be in YYYY-MM-DD format.'
        ),
        'monitoring' => array(
            'rule' => 'notEmpty'
        )
    );

这是我的表格:

echo $this->Form->create('Offender');
echo $this->Form->input('first_name', array('label' => 'First name:'));
echo $this->Form->input('last_name', array('label' => 'Last name:'));
echo $this->Form->input('accused_of', array('label' => 'Accused of:'));
echo $this->Form->input('monitoring', array('label' => 'Monitoring (enter as comma seperated list. ex: BAC, location):'));
echo $this->Form->input('last_4_of_ssn', array('label' => 'Last 4 digits of SSN:') );
echo $this->Form->input('date_of_accusation', array('label' => 'Date of accusation:'));
echo $this->Form->end('Save New Offender');

1 个答案:

答案 0 :(得分:0)

对于某些字段,您尚未设置任何自定义消息,请转到此网址http://book.cakephp.org/2.0/en/models/data-validation.html

您也可以为此目的创建自定义验证,就像验证数组一样

   'last_4_of_ssn' => array(
        'rule' => array('digitValidate'), 
        'messsage' => 'Exactly 4 digits'    
    )

在模型中,您可以创建一个具有相同名称的公共函数。

public function digitValidate() {

    $pattern = '/^[0-9]{4}$/';

   if (!preg_match($pattern,$this->data['last_4_of_ssn'])) {
      return false;
   }

  return true;

}

我希望这会对你有所帮助。