Ошибка обработки codeigniter и phpactiverecord - PullRequest
3 голосов
/ 08 сентября 2011

Я новичок в 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() в контроллере? Я хотел бы выполнить большую часть работы в модели (следуя принципу «толстая модель тощий контроллер»), но я не могу действительно увидеть «хороший» способ распространения ошибок на контроллер и на представление.

1 Ответ

2 голосов
/ 03 марта 2012

Почему бы не добавить метод сообщения об ошибках в модель

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 (), выполнить любое дополнительное форматирование, если хотите, и передать массив в представление.

...