验证在模型中定义 - CakePHP

时间:2013-01-17 21:58:06

标签: cakephp cakephp-1.3 cakephp-appmodel

使用CakePHP 1.3我开发了带有帖子和评论表的博客引擎,最近我注意到在数据库中我有内容列中包含空值的记录,尽管评论模型已经定义了正确的验证:



    <?php
    class Comment extends AppModel {
        var $name = 'Comment';
        var $sequence = 'comments_seq';

        var $belongsTo = array(
            'Post' => array(
                'className'  => 'Post',
                'foreignKey' => 'post_id'
            )
        );

        var $validate = array(
            'content' => array(
                'required' => array (
                        'rule' => 'notEmpty',
                        'message' => 'Content can't be empty.'
                )
            ),
            'post_id' => array(
                'rule' => 'notEmpty'
            ),
            'created' => array(
                'rule' => 'notEmpty'
            )
        );
    ?>

CakePHP框架中是否存在错误或上面定义的验证不正确或不充分?

1 个答案:

答案 0 :(得分:2)

在您的验证规则中,您实际上并不需要该字段。要求意味着在验证时必须存在密钥。 notEmpty规则仅要求密钥不为空,而不是存在

要求该字段存在,请使用验证规则中的必需选项:

var $validate = array(
  'content' => array(
    'required' => array ( // here, 'required' is the name of the validation rule
      'rule' => 'notEmpty',
      'message' => 'Content can\'t be empty.',
      'required' => true // here, we say that the field 'content' must 
                         // exist when validating
    )
  ),
  'post_id' => array(
     'rule' => 'notEmpty'
   ),
   'created' => array(
     'rule' => 'notEmpty'
   )
);

如果没有所需的密钥,您可以通过在保存时不包含“内容”键来保存完全空的记录。现在它是必需的,如果'content'不在您要保存的数据中,验证将失败。