Автоматическое заполнение «Form :: text» из «Form :: model» после добавления дополнительного атрибута (класса) в Laravel - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время я выполняю рендеринг и заполняю форму в laravel с помощью плагина laravelcollective .это работает как ожидалось:

{!! Form::model($user, ['action' => 'user@updateUser']) !!}

<div class="form-group">
    {!! Form::label('user_name', 'Name') !!}
    {!! Form::text('user_name') !!}
</div>

<button class="btn btn-success" type="submit">Update</button>

{!! Form::close() !!}

Приведенный выше код генерирует форму и заполняет поле ввода именем пользователя.

Если я хочу добавить атрибут класса в форму ввода, напримертак:

{!! Form::text('user_name', '', ['class' => 'form-control']) !!}

Не заполняет входное значение, потому что теоретически я установил значение по умолчанию (второй параметр) на ''.

Есть ли способ заполнениязначение и добавление класса без явного выполнения этого, например, так:

{!! Form::text('user_name', $user->user_name, ['class' => 'form-control']) !!}

Выполнив вышесказанное, мы побеждаем объект рендеринга формы с помощью модели {!! Form::model($user, ['action' => 'user@updateUser']) !!}, так как я могу также проанализировать $user какпеременная на шаблон, что я не хочу делать.

1 Ответ

0 голосов
/ 08 июня 2018

Тогда вы можете использовать null вместо "" blank

{!! Form::text('user_name', null , ['class' => 'form-control']) !!}

Вы также можете использовать old function

{!! Form::text('user_name', $user->user_name or old('user_name'), ['class' => 'form-control']) !!}

This $user->user_name or old('user_name') может быть выражено как

Если существует $user->user_name, тогда введите значение $user->user_name, в противном случае проверьте old input, которое "" пусто в первый раз и имеет какое-либо значение, если вы перенаправляете назад, если возникает какая-либо ошибка.

или просто используйте isset метод или в php 7 используйте $user->user_name ?? ''

{!! Form::text('user_name', $user->user_name ?? '', ['class' => 'form-control']) !!}
...