Страница обновления профиля
Я использую маршрут как
Route::get('editdriver/{data}', 'DriverController@EditDriver');
И в контроллере после проверки я использую,
return Redirect::to('editdriver/'.$data)->withInput()->withErrors($validation->messages());
Таким образом, URL будет
HTTP: // локальный / проект / editdriver / 1
Если я опущу значение, которое требуется в rule
и нажмите отправить форму,
Он показывает старые данные с подтверждением.
То, что мне нужно, не должно показывать старое значение, которое находится из db.
Я даже пытался.
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 as
{{ Form::text('Firstname',null, array('id'=> 'Firstname')) }}
Я понятия не имею, почему вы используете jQuery для заполнения своей формы – это не имеет смысла, и вы должны удалить этот код.
Все, что вам нужно, это одна строка кода:
{{ Form::text('Firstname', Input::old('Firstname', $DriverDetails[0]['Firstname']), array('id'=> 'Firstname')) }}
Использование Input::old($DriverDetails[0]['Firstname'])
будет заполнять основную форму значением вашей базы данных, но затем заполнит форму любыми введенными значениями, если есть ошибка проверки
И для подтверждения – ваше исходное заявление возврата выглядит правильно:
return Redirect::to('editdriver/'.$data)->withInput()->withErrors($validation->messages());
Я думаю, вы хотите использовать метод формы :: model 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)); }
Это вернет информацию пользователя, которую вы хотите изменить. И модель Form :: будет автоматически совпадать с именами вашего текста формы ::. Я думаю, что ваши поля базы данных должны соответствовать именам формы :: text.
И затем, когда вы публикуете свое редактирование на сервере, вы можете сделать это:
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, чтобы вернуть информацию, введенную пользователем. Затем модель Form :: просмотрит данные Flash сессии и поместит старый вход в нужные места. Обратите внимание, что данные флэш-памяти сеанса будут воспринимать значение модели ($ User).
Laravel Form Model Binding: http://laravel.com/docs/4.2/html#form-model-binding
Надеюсь это поможет!