Laravel 5.6 заполнить поле после отправки - PullRequest
0 голосов
/ 22 октября 2018

Я использую систему Коллектива Laravel для создания своих форм и пытаюсь заполнить мои поля формы значениями, которые были отправлены после перезагрузки страницы, следующим образом:

{{ Form::text('id', {{ request('id') }} , array('class' => 'form-control')) }}

Это выдает эту ошибку:

синтаксическая ошибка, неожиданная '{'

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Проблема в том, что вы используете лезвие внутри лезвия:

\/                  \/
{{ Form::text('id', {{ request('id') }} , array('class' => 'form-control')) }}

И это, очевидно, не принимается.

Вы должны помнить, что после открытия метки лезвия {{, лезвие переведет его так:

<?php echo Form::text('id', {{ request('id') }} , array('class' => 'form-control')) ?>

Обратите внимание, что он не работает рекурсивно, поэтому тег второго уровня не будет переведен, и { является недопустимым символом внутриPHP-код.

Чтобы решить эту проблему, вы не должны (и не должны) использовать метку второго уровня:

{{ Form::text('id', request('id'), array('class' => 'form-control')) }}

Конечно, я предполагаю, что request() функция существует, в противном случае она выдаст ошибку: Call to undefined function request().


Чтобы решить вашу проблему (не ошибку), вы должны использовать метод old() вместо request(), так как ониспользует значение, сохраненное Laravel в сеансе.

Обратите внимание, что этот подход работает в двух ситуациях:

  • При возникновении ошибки проверки
  • Когда вы вручную мигаете поля

Это поведение описано здесь, в Документах Laravel

0 голосов
/ 22 октября 2018

old('id') Должен вернуть вход с именем id из последнего запроса.

Так в вашем случае:

{{ Form::text('id', old('id') , array('class' => 'form-control')) }}

...