2014-01-20 2 views
1

Я работаю с Laravel, и в примерах они, похоже, решили реализовать проверку внутри контроллера, и мне это совсем не нравится. Я хочу спросить, есть ли какой-то метод bind, который может связывать поля ввода, которые я создал, чтобы я мог убедиться, что мои контроллеры не запутаны.привязка модели из формы ввода

Я попытаюсь объяснить, что я хочу в коде, я думаю, это будет намного яснее.

То, что я

public function postRegister() { 
    $validation = Validator::make(Input::all(), array(
       'email' => 'required|email', 
       'password' => 'required|min:6', 
       'name' => 'required|alpha', 
       'gender' => 'required|in:male,female' 
    )); 

    if ($validation->fails()) { 
     Input::flashExcept('password'); 
     return Redirect::to('register')->withErrors($validation)->withInput(); 
    } 

    // Register user... 
} 

То, что я хочу иметь

class UserRegisterDto { 
    public $email; 
    public $password; 
    public $name; 
    public $gender; 

    protected $errors; 

    public function isValid() { 
     // Validate it here, set errors if there are some 
     return $validator->isValid(); 
    } 

    public function getErrors() { 
     return $this->errors; 
    } 
} 

public function postRegister() { 
    $user = Input::bind('UserRegisterDto'); // This is made-up function, I wonder if something like this exists 

    if ($user->isValid()) { 
     // Register user... 
    } 
} 

ответ

0

Пылкий может помочь вам сохранить контроллеры чистый: https://github.com/laravelbook/ardent

«Пламенные модели используют Laravel встроенные в валидатор класс. Определение правил проверки для модели прост и обычно выполняется в вашем классе модели как статическая переменная «

+0

Хм, хорошо выглядит, но я смущен насчет 'save'. Что, если (и в моем случае это правда), я использую пользовательский репозиторий, чтобы сохранить его, так как я не использую MySql, а Cassandra? – sed

+0

Не знаю, извините. Я использую его с MySQL. – chris342423

Смежные вопросы