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 に答える