Laravel вернуться на страницу со старым вводом для проверки
Для страницы профиля обновления
Я использую маршрут как
Route::get('editdriver/{data}', 'DriverController@EditDriver');
А в контроллере после валидации использую,
return Redirect::to('editdriver/'.$data)->withInput()->withErrors($validation->messages());
Таким образом, url-адрес будет
Http://localhost/project/editdriver/1
Если я опустошу значение, которое требуется в rule
и нажму отправить форму,
Он показывает старые данные с сообщением проверки.
Мне нужно, чтобы он не показывал старое значение, которое находится в БД.
Я даже пытался.,
return Redirect::back()->withErrors($validation->messages());
Как я могу это сделать ??
Обновление:
В контроллере у меня есть
public function EditDriver($data=NULL)
{
$editvehicle=$data;
$DriverDetails = DriverModel::where('DriverId', $editvehicle)->get()->toArray();
return View::make('home/editdriver')->with('DriverDetails', $DriverDetails);
}
В представлении, которое я имею
$("#Firstname").val("<?php echo $DriverDetails[0]['Firstname']?>");
И отображение из jquery в html как
{{ Form::text('Firstname',null, array('id'=> 'Firstname')) }}
2 ответа:
Я понятия не имею, почему вы используете jQuery для заполнения своей формы - это не имеет смысла, и вы должны удалить этот код.
Все, что вам нужно, это одна строка кода:
{{ Form::text('Firstname', Input::old('Firstname', $DriverDetails[0]['Firstname']), array('id'=> 'Firstname')) }}
С помощью
Input::old($DriverDetails[0]['Firstname'])
будет предварительно заполнена форма inital с вашим значением базы данных - но затем заполнит форму с любыми "введенными" значениями, если есть ошибка проверкиИ чтобы подтвердить-ваш исходный оператор возврата выглядит правильно:
return Redirect::to('editdriver/'.$data)->withInput()->withErrors($validation->messages());
Я думаю, что вы хотите использовать метод модели формы:: Laravel. Это позволяет вам легко заполнять форму данными из вашей базы данных, а также дает вам возможность вводить старые данные формы.
{{ Form::model($User, array('url' => 'management/edit/' . $User->id, 'role' => 'form')) }} <div class="form-group"> <label>Username</label> {{ Form::text('username', Input::old('username'), array('class' => 'form-control', 'placeholder' => 'Username', 'name' => 'username')) }} </div> <div class="form-group"> <label>Password</label> {{ Form::password('password', array('class' => 'form-control', 'placeholder' => 'Password', 'name' => 'password')) }} </div> {{ Form::submit('Edit', array('class' => 'btn btn-default')) }} {{ Form::close() }}
В своей публичной функции вы можете сделать следующее:
public function showEdit($ID) { //Return View With User Information return View::make('management.edit') ->with('User', Management::find($ID)); }
Это передаст обратно информацию о пользователе, которого вы хотите отредактировать. И форма:: модель будет соответствовать этому автоматически с именами вашей формы:: текст. Я думаю, что поля вашей базы данных должны совпадать с именами Форма:: текст.
А затем, когда вы опубликуете свое редактирование на сервере, вы можете сделать следующее:
public function postEdit($ID) { // Get Input $PostData = array( 'username' => Input::get('username'), 'password' => Input::get('password') ); // Declare Validation Rules. $ValRules = array( 'username' => 'required|unique:management,username,' . $ID, 'password' => 'required' ); // Declare Validation Messages $ValMessages = array( 'username.required' => 'The field Username is required.</br>', 'username.unique' => 'The field Username must be unique.</br>', 'password.required' => 'The field Password is required.</br>' ); // Validate Input $ValResult = Validator::make($PostData, $ValRules, $ValMessages); // Check Validate if ($ValResult->passes()) { // Update User $UserUpdate = Management::find($ID); $UserUpdate->username = Input::get('username'); $UserUpdate->password = Input::get('password'); $UserUpdate->save(); // Succes, Redirect To User return Redirect::to('management') ->with('Success', 'The management users is modified.'); } else { // Grab Messages From Validator $ValErrors = $ValResult->messages(); // Error, Redirect To User Edit return Redirect::to('management/edit/' . $ID) ->withErrors($ValErrors) ->withInput(Input::except('password')); } }
Смотрите ->withInput, чтобы вернуть информацию, введенную пользователем. Форма:: модель будет затем искать в сеансе Флэш-данные и помещать старые входные данные на нужные места. Обратите внимание, что данные флэш-памяти сеанса будут предшествовать значению модели ($User).
Типовая Форма Фреймворк Laravel Привязки: http://laravel.com/docs/4.2/html#form-model-binding
Надеюсь, это поможет!