While trying to write a simple login function for a user model today I came across a small gotcha that it is not apparent at first.
In CakePHP 1.1 if you want to manually validate a model you would write:
if ($this->Model->validates($this->data)){ //success }
However in CakePHP 1.2 this throws a nice deprecated warning:
Warning (512): (Model::validates) Parameter usage is deprecated, set the $data property instead [CORE/cake/libs/model/model.php, line 1660]
I first tried just an empty validates() expecting it to use Controller::data, however this was appearing to pass validation. Not good when the entire form was empty with VALID_NOT_EMPTY’s on every field. A quick look-see in the source of model.php reveals that Model::invalidFields() expects Model::data to be populated.
As pointed out by nate in the comments my original solution is not recommended.
The updated solution is to use:
$this->Model->set($this->data); if ($this->Model->validates()){ // success }
Recent Comments