Я нахожу примеры и учебные руководства о моделях и о проверке. И я помещаю, которые говорят, что проверка (или большая часть из него, по крайней мере) должна быть в модели, с которой я соглашаюсь. Но я не могу никакие примеры или учебные руководства, которые показывают, как это должно быть сделано.
Кто-либо мог помочь мне с простым примером о том, как это могло быть сделано? Где у Вас были бы правила в модели? Где проверка произошла бы? Как контроллер знал бы, передала ли проверка или сбой? Как контроллер получил бы сообщения об ошибках и подобные вещи?
Надежда, которой кто-то может помочь, причина, чувствует себя немного потерянной здесь :p
Вот простой пример, который мне подходит.
В моей модели (client.php):
<?php defined('SYSPATH') or die('No direct script access.');
class Client_Model extends Model {
public $validation;
// This array is needed for validation
public $fields = array(
'clientName' => ''
);
public function __construct() {
// load database library into $this->db (can be omitted if not required)
parent::__construct();
$this->validation = new Validation($_POST);
$this->validation->pre_filter('trim','clientName');
$this->validation->add_rules('clientName','required');
}
public function create() {
return $this->validation->validate();
}
// This might go in base Model class
public function getFormValues() {
return arr::overwrite($this->fields, $this->validation->as_array());
}
// This might go in base Model class
public function getValidationErrors() {
return arr::overwrite($this->fields, $this->validation->errors('form_errors'));
}
}
?>
В моем контроллере (clients.php):
<?php defined('SYSPATH') OR die('No direct access allowed.');
class Clients_Controller extends Base_Controller {
public function __construct() {
parent::__construct();
}
public function index() {
$content = new View('clients/read');
$content->foobar = 'bob.';
$this->template->content = $content;
$this->template->render(TRUE);
}
/* A new user signs up for an account. */
public function signup() {
$content = new View('clients/create');
$post = $this->input->post();
$client = new Client_Model;
if (!empty($post) && $this->isPostRequest()) {
$content->message = 'You submitted the form, '.$this->input->post('clientName');
$content->message .= '<br />Performing Validation<br />';
if ($client->create()) {
// Validation passed
$content->message .= 'Validation passed';
} else {
// Validation failed
$content->message .= 'Validation failed';
}
} else {
$content->message = 'You did not submit the form.';
}
$contnet->message .= '<br />';
print_r ($client->getFormValues());
print_r ($client->getValidationErrors());
$this->template->content = $content;
$this->template->render(TRUE);
}
}
?>
В моем файле i18n (form_errors.php):
$lang = Array (
'clientName' => Array (
'required' => 'The Client Name field is required.'
)
);