Laravel blade "старый ввод или переменная по умолчанию"?

Я хочу показать старый вход во входном значении. Если нет старого ввода, чем показать другую переменную:

value="{{ old('salary_' . $employee->id) or 'Default' }}"

Но когда нет старого ввода, он дает мне 1 вместо значения по умолчанию!

Я думаю, что проблема имеет какое-то отношение к конкатенации, но я не знаю, как это исправить !?

Ответ 1

or является оператором сравнения в PHP, поэтому ваш код оценивается как true или 1. То, что вы хотите, - это тройная инструкция if.

Как уже упоминалось, or может использоваться в лезвии как сокращенное выражение для трёхмерного выражения.

Но вы можете (и должны) просто передать значение по умолчанию в качестве второго аргумента функции, например:

value="{{ old('salary_' . $employee->id, 'Default') }}"

Ответ 2

Как описано в документе Laravel: "Если вы показываете старый ввод в шаблоне Blade, удобнее использовать старый помощник:". Поэтому, если вам нужно добавить/изменить форму данных (когда вам нужно использовать форму редактирования для добавления и редактирования в режиме редактирования, вам нужно использовать загруженные данные из модели (базы данных)), чтобы отображать значения из модели (через контроллер), которую вы можете использовать в следующих:

name="some_value" value="{{ $some_value or old('some_value', $the_value) }}"

где - имя переменной "some_value_from_model" в массиве view. В этом случае он должен быть сначала $ some_value будет использоваться для установки в "значении", и, если нет, он попытается использовать старый (значение из запроса от имени "some_value"), а если не старое, тогда "" должно быть используемый.

Спасибо WoodyDRN за комментарий.

Ответ 3

Попробуй это:

<textarea name="alamat" id="" class="form-control" placeholder="Alamat">{{ old('alamat')[email protected]$biodata->alamat }}</textarea>