Ответ 1
Функция old имеет параметр по умолчанию, если старые данные не найдены в сеансе.
function old($key = null, $default = null)
Вы можете заменить выражение в шаблоне
value="{{old('title', $dog->title)}}"
Я пишу логику для формы редактирования и у меня есть некоторые сложности при отображении данных на входах.
Когда я первоначально показываю форму, я показываю значения записей как:
value="{{$dog->title}}"
Затем, когда форма не проходит проверку, мне нужно показать старый ввод, чтобы пользователь не потерял то, что уже ввел. Поэтому мне нужен способ отображения старых данных, таких как:
value="{{old('title')}}"
Поскольку мне нужно вводить старые данные, если они существуют, я получил следующий код:
value="{{$dog->title or old('title')}}"
И в контроллере я проверяю, имеет ли запрос старый ввод, я присваиваю $ dog var нулевое значение.
Я хотел спросить, считается ли это нормальной практикой или есть лучший и "правильный" способ сделать это?
Функция old имеет параметр по умолчанию, если старые данные не найдены в сеансе.
function old($key = null, $default = null)
Вы можете заменить выражение в шаблоне
value="{{old('title', $dog->title)}}"
Я знаю, что на этот вопрос уже дан ответ, но я подумал, что в будущем оставлю здесь небольшой фрагмент для других.
Установив старое значение на входе как @ikurcubic отправленный, можно использовать тот же самый способ на переключателе или выбрать:
<input type="text" name="name" value="{{ old('name', $DB->default-value) }}" />
Выберите вариант:
<option value="Jeff" {{ old('name', $DB->default-value) == 'Jeff' ? selected : '' }}>Jeff</option>
Переключатель:
<input type="radio" name="gender" value="M" {{ old('name', $DB->default-value)== "M" ? 'checked' : '' }} />
Еще один способ сделать это: написать небольшой if, чтобы определить, какое значение следует оценивать.
@php
if(old('name') !== null){
$option = old('name');
}
else{ $option = $database->value; }
@endphp
<select name="name">
<option value="Bob" {{ $option == 'Bob' ? selected : '' }}>Bob</option>
<option value="Jeff" {{ $option == 'Jeff' ? selected : '' }}>Jeff</option>
</select>
<input type="radio" name="gender" value="M" {{ $option == "M" ? 'checked' : '' }} />
<input type="radio" name="gender" value="F" {{ $option == "F" ? 'checked' : '' }} />
Установка старого значения ввода с именем массива, например, name = "name []":
<input type="text" name="name[]" value="{{ old('name.0) }}" />
Это даст вам старое значение ввода с индексом 0
Я проверил это, и это работает, я надеюсь, что это кому-то поможет.
Нет ничего плохого в том, как вы делаете то, что Laravel дает несколько способов справиться с ситуацией, которую вы описываете.
Я бы предложил использовать Larvel Collective Form и HTML-пакеты для создания вашей формы. Этот пакет автоматически обрабатывает привязку старых значений запроса к вашей форме, если проверка не выполняется.
Я решил эту проблему в своем приложении если вы хотите получить старое предыдущее введенное значение во входных данных, попробуйте это Мне так понравилось.
function SaveData(Request $request)
{
$sValidationRules = [
'firstname' => 'required',
'lastname' => 'required',
'email' => 'required',
'phone' => 'required',
];
$validator = Validator::make($request->all(), $sValidationRules);
if ($validator->fails()) // on validator found any error
{
// pass validator object in withErrors method & also withInput it should be null by default
return redirect('Your Route Hare')->withErrors($validator)->withInput();
}
Employee::create($request->all());
return redirect(' your route hare ');
}
& амп; после этого получите старые данные в поле ввода, как это, используя {{Request :: old ('firstname')}} Удачного кодирования. :)
<input type="text" name="firstname" id="firstname" value="{{ Request::old('firstname') }}" class="form-control" placeholder="First Name">