2011-09-08 122 views
3

我是CodeIgniter和PhpActiverecord的新手,我想知道在使用CI和phpactiverecord时如何最好地将错误从模型传播到控制器。举一个简单的例子,考虑这个:错误处理codeigniter和phpactiverecord

class Book extends ActiveRecord\Model { 

    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() 
    else 
     return $new_record; 
    } 

} 

我应该有我的控制器,如果错误已经设置或检查我应该只是返回$new_record无论发生什么事,做在控制器中is_invalid()检查变量?我想做模型中的大部分工作(遵循“胖模型瘦身控制器”原则),但我不能真正看到将错误传播到控制器和视图的“好”方式。

+0

为什么不使用CodeIgniter的ActiveRecord实现? –

+0

我关注http://heybigname.com/category/screencasts/new-codeigniter-website-series/上使用phpactiverecord的截屏视频。 – Slim

回答

2

为什么不如果返回错误或NULL值的错误报告方法模型

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; 
    } 

} 

添加在控制器中,测试。如果是这样,你可以调用get_errors()方法,如果你愿意,可以做任何其他的格式化,并将数组传递给视图。