2015-11-11 2 views
12

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

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

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

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

ответ

25

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

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

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

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

Теперь вот забавная вещь; используя '{{$ value или $ default}}' - это короткий способ сделать тернарный оператор в Blade ([Ссылка] (http://laravel.com/docs/5.1/blade#displaying-data)). Поэтому я не уверен, что это правильно. Это, однако, яснее! –

+0

Как и в Laravel docs: {{isset ($ name)? $ name: 'Default'}} shorthand way {{$ name или 'Default'}} – ArtisanBay

+0

@ChrisForrence вы правы! вы узнаете что-то каждый день ... лучший способ добиться этого - передать значение по умолчанию в качестве второго аргумента. – Adunahay

0

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

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

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

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

+5

Но если вы так делаете $ some_value или old ('some_value') - тогда, если пользователь вводит что-либо в поля ввода и отправляет, и произошла ошибка, тогда он будет по умолчанию возвращаться к $ some_value и удалять все, что угодно написал. old ('some_value', $ some_value) исправит это. – WoodyDRN

Смежные вопросы