3

我是 CodeIgniter 和 PhpActiverecord 的新手,我想知道在使用 CI 和 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()在控制器中进行检查?我想在模型中完成大部分工作(遵循“胖模型瘦控制器”原则),但我真的看不到将错误传播到控制器和视图的“好”方式。

4

1 回答 1

2

为什么不在模型中添加错误报告方法

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

}

在控制器中,测试是否返回 false 或 NULL 值。如果是这样,您可以调用 get_errors() 方法,如果您愿意,可以进行任何其他格式化,并将数组传递给视图。

于 2012-03-02T20:20:41.947 回答