Error handling codeigniter and phpactiverecord
I'm new to CodeIgniter and PhpActiverecord and I'm wondering how to best propagate errors from the Model to the Controller when using CI and phpactiverecord. As a simple example consider this:
class Book extends ActiveRecord\Model {
static $validates_presence_of = array(
array('title')
);
public static function new_book($title){
$new_record = Book::cre开发者_如何转开发ate(array(
'title' => $title
));
if($new_record->is_invalid())
//propagate error with $new_record->errors->full_messages()
else
return $new_record;
}
}
Should I have a variable in my controller that checks if errors has been set or should I just return $new_record
whatever happens and do the is_invalid()
check in the controller? I would like to do most of the work in the model (to follow the "fat model skinny controller" principle) but I can't really see a "nice" way of propagating the errors to the controller and on to the view.
Why not add an error reporting method to the model
class Book extends ActiveRecord\Model {
private $errors = array();
public function get_errors() {
return $this->errors;
}
static $validates_presence_of = array(
array('title')
);
public static function new_book($title){
$new_record = Book::create(array(
'title' => $title
));
if($new_record->is_invalid())
//propagate error with $new_record->errors->full_messages()
$this->errors[] = $new_record->errors->full_messages()
else
return $new_record;
}
}
In the controller, test if a false or NULL value is returned. If so you can call the get_errors() method, do any additional formatting if you choose to, and pass the array to the view.
精彩评论