Вот моя форма
{{ Form::open(array('url' => 'register', 'class' => 'form-signin')) }}
// form username , password .. fields here
{{ Form::close() }}
И маршрут
Route::post('register', 'RegisterController@registeruser');
И контроллер это
public function registeruser()
{
//validation
return Redirect::to('/')->withErrors($validator); // main
}
Поскольку я перенаправлен, у меня не будет никаких полей, которые заполняются в форме.
Я знаю, что я должен использовать запрос и ответ для этого.
Я попытался с ответом ниже, даже это ужасная попытка.
return Response::view('home')->header('utf-8', $messages);
Но при выполнении вышеизложенного даже страница перезагружается и значения, заполненные в форме, исчезают. Как я могу через ошибки без пропажи значений?
Есть ли способ заполнить поля в форме как введено?
Вам нужно использовать ->withInput()
return Redirect::to('/')->withInput()->withErrors($validator); // main
Вы можете использовать Input :: flash ()
public function registeruser()
{
//validation
Input::flash();
return Redirect::to('/')->withErrors($validator); // main
}
Затем в методе контроллера, который обрабатывает перенаправление, вы можете получить доступ к старому вводу с помощью Input :: old (). Использование Input :: all () вернет данные только для текущего запроса.
Вы также можете использовать цепочечный метод -> withInput () в вашей обратной строке.
Об этом подробнее здесь http://laravel.com/docs/4.2/requests
Предположим, у вас есть такая проверка:
$validation = Validator::make($input, $rules);
Тогда вам нужно сделать это:
if( $validation->fails() )
{
return Redirect::back()->withInput()->withErrors($validator->messages());
}
Обратите внимание Redirect::back()
что позволяет вам вернуться к вашей форме и заполнить ее автоматически с помощью ввода пользователя