【问题标题】:CakePHP not showing form validation messagesCakePHP 不显示表单验证消息
【发布时间】:2013-01-01 16:05:32
【问题描述】:

我正在尝试构建我的第一个 CakePHP 应用程序,当我尝试添加到数据库时,我遇到了表单验证未显示的问题。在提交表单时,我收到了 flash 消息(如下面的控制器所示),但没有显示单独的验证。

型号:

class Client extends AppModel {

public $validate = array (

'businessName' => array (
    'mustNotBeBlank'=>array(
        'rule'=>'notEmpty',
        'message'=>'Must not be empty'
                ),
    'mustBeUnique'=>array(
        'rule'=>'isUnique',
        'message'=>'Name already registered'
                ),
    'maxLength50'=>array (
        'rule'=>array('maxLength', 50),
    'message'=>'Exceeds 50 Characters'
                )
    ),

'address1' => array (
    'mustNotBeBlank'=>array(
        'rule'=>'notEmpty',
        'message'=>'Must not be empty'
                ),
    'maxLength50'=>array (
        'rule'=>array('maxLength', 50),
    'message'=>'Exceeds 50 Characters'
                )
    ),

'address2' => array (
    'mustNotBeBlank'=>array(
        'rule'=>'notEmpty',
        'message'=>'Must not be empty'
                ),
    'maxLength50'=>array (
        'rule'=>array('maxLength', 50),
    'message'=>'Exceeds 50 Characters'
                )
    ),
'address3' => array (
    'mustNotBeBlank'=>array(
        'rule'=>'notEmpty',
        'message'=>'Must not be empty'
                ),
    'maxLength50'=>array (
        'rule'=>array('maxLength', 50),
    'message'=>'Exceeds 50 Characters'
                )
    ),

'postCode' => array (
    'mustNotBeBlank'=>array(
        'rule'=>'notEmpty',
        'message'=>'Must not be empty'
                ),
    'postCode' => array(
            'rule'=>array('postal', null, 'uk'),
            'message'=>'Please enter a valid postcode'
                    )
    ),

'telephone1' => array (
    'mustNotBeBlank'=>array(
        'rule'=>'notEmpty',
        'message'=>'Must not be empty'
                ),
    'maxLength11'=>array (
        'rule'=>array('maxLength', 11),
    'message'=>'Exceeds phone number length'
                ),
    'mustBeNumber'=>array(
            'rule' =>'numeric',
            'message' => 'Must be a number'
                    )
    ),

'telephone2' => array (
    'maxLength11'=>array (
        'rule'=>array('maxLength', 11),
    'message'=>'Exceeds phone number length'
                ),
    'mustBeNumber'=>array(
            'rule' => 'numeric',
            'message' => 'Must be a number'
                    )

    ),

'email' => array (
        'rule'    => array('email', true),
        'message' => 'Please supply a valid email address.'
),

    'domain' => array (
        'rule' => 'url',
        'message' => 'Please supply a valid email address.'
)
);

}

视图(为简单起见删除了 html):

echo $this->form->create();
echo $this->Form->input('businessName', array('label' => 'Business Name'));
echo $this->Form->input('address1', array('label' => 'Address'));
echo $this->Form->input('address2', array('label' => ''));
echo $this->Form->input('address3', array('label' => ''));
echo $this->Form->input('postCode', array('label' => 'Postcode'));
echo $this->Form->input('telephone1', array('label' => 'Landline'));
echo $this->Form->input('telephone2', array('label' => 'Mobile'));
echo $this->Form->input('email', array('label' => 'Email'));
echo $this->Form->input('domain', array('label' => 'Domain'));

$options = array(
    'label' => 'Add',
    'div' => array(
        'class' => 'btn btn-primary',
    )
);
echo $this->Form->end($options);

在控制器中添加动作:

public function add() {
    if ($this->request->is('post')) {
        $this->Client->create();
        if ($this->Client->save($this->request->data)) {
            $this->Session->setFlash('Client has been saved.');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash('Unable to add your post.');
        }
    }
}

再次感谢您的帮助。

【问题讨论】:

标签: php validation cakephp


【解决方案1】:

您的表单创建标签是

echo $this->form->create();

但应该是

echo $this->Form->create();

注意大写的F,本地都试过了,小写的->form报错报错。

【讨论】:

  • 抱歉,这是将代码复制到 SO 中时出现的拼写错误
  • 哦,你的表单创建标签是问题... echo $this->form->create();应该是 echo $this->Form->create();这里都试过了,小写的报错失败。我已经更新了我的答案以反映这一点。
  • 感谢您的帮助!
猜你喜欢
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多