Директива Laravel old () с условным значением по умолчанию

Я использую Laravel 5.8, и у меня есть несколько полей ввода, которые, конечно же, содержат директиву old () для каждого тега value = "".

Это мой пример прямо сейчас:

<input class="form-control input-md" name="contact_name" type="text" value="@if($edit){{ $ad->contact_name }}@else{{ old('contact_name')}}@endif">

Я теперь, если я использую это: {{ old('contact_name', "John")}}

Значение по умолчанию - «Джон».

Но я хочу проверить, вошел ли пользователь в систему, и предварительно заполнить этот ввод контактным именем пользователя.

Моя идея примерно такая:

value="@if($edit){{ $ad->contact_name }}@else{{ old('contact_name', Auth::user()->name)}}@endif

И это работает! Но, конечно, выдает: Trying to get property 'name', когда я получаю окно в режиме инкогнито.

Итак, как мне оценить пользователей, вошедших в систему, и заполнить это поле?


person Erich García    schedule 16.01.2020    source источник


Ответы (1)


Вы можете использовать необязательный помощник:

{{ old('contact_name', optional(Auth::user())->name) }}
person Chin Leung    schedule 16.01.2020
comment
О, ребята, какое красивое решение. Я не помнил необязательного помощника. Решено как это уродливо: old ('contact_name', isset (Auth :: user () - ›name)? Auth :: user () -› name: '') Но ваши намного красивее Спасибо! - person Erich García; 16.01.2020