2011-09-08 88 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()方法,如果你願意,可以做任何其他的格式化,並將數組傳遞給視圖。