Лезвие Laravel «старый ввод или переменная по умолчанию»?

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

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

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

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

23

Решение

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

Как уже упоминалось, or может использоваться в блейде как сокращение для троичного оператора if.

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

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

Другие решения

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

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

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

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

0

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

<textarea name="alamat" id="" class="form-control" placeholder="Alamat">{{ old('alamat').@$biodata->alamat }}</textarea>
-4
По вопросам рекламы [email protected]