0

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



    <?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 框架中是否存在错误或上面定义的验证不正确或不充分?

4

1 回答 1

2

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

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

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'
   )
);

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

于 2013-01-17T22:04:54.390 回答