Using CakePHP 1.3 I developed engine for blog with posts and comments tables and recently I have noticed that in database I’ve got records with null values in content column despite of the fact that Comment model has defined proper validation:
<?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'
)
);
?>
Is there a bug in CakePHP framework or validation defined above is not correct or insufficient?
In your validation rules, you’re not actually requiring the field. Requiring means that the key must exist when it comes time to validate. The
notEmptyrule requires only that the key is not empty but not that it exists.To require that the field exists, use the required option in your validation rules:
Without the required key, you could potentially save completely empty records by simply not including the ‘content’ key when saving. Now that it is required, validation will fail if ‘content’ is not in the data that you’re saving.