使用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框架中是否存在错误或上面定义的验证不正确或不充分?
答案 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'不在您要保存的数据中,验证将失败。