Kohana 3: Пример модели с проверкой

Я нахожу примеры и учебные руководства о моделях и о проверке. И я помещаю, которые говорят, что проверка (или большая часть из него, по крайней мере) должна быть в модели, с которой я соглашаюсь. Но я не могу никакие примеры или учебные руководства, которые показывают, как это должно быть сделано.

Кто-либо мог помочь мне с простым примером о том, как это могло быть сделано? Где у Вас были бы правила в модели? Где проверка произошла бы? Как контроллер знал бы, передала ли проверка или сбой? Как контроллер получил бы сообщения об ошибках и подобные вещи?

Надежда, которой кто-то может помочь, причина, чувствует себя немного потерянной здесь :p

34
задан Svish 17 March 2010 в 12:53
поделиться

1 ответ

Вот простой пример, который мне подходит.

В моей модели (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.'
)
);
4
ответ дан 27 November 2019 в 17:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: