【问题标题】:Laravel 5.6 populate field after submitLaravel 5.6 提交后填充字段
【发布时间】:2019-03-26 13:25:40
【问题描述】:

我使用 Laravel Collective 系统来构建我的表单,并尝试使用页面重新加载后提交的值填充我的表单字段,如下所示:

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

这会引发此错误:

语法错误,意外的“{”

【问题讨论】:

  • 为什么你在 request 周围使用 {{}} ?试试这个:{{ Form::text('id', request('id') , array('class' => 'form-control')) }}
  • @Zoha 我试过了,可惜没用。
  • 您遇到的错误是我所说的,双括号中的所有内容都被视为 php 语法,{ 不是 PHP 有效语法
  • 我认为可以使用old()方法

标签: php forms laravel-5 laravelcollective


【解决方案1】:

old('id') 应该从最后一个请求返回名为 id 的输入。

所以在你的情况下:

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

【讨论】:

    【解决方案2】:

    问题是您在刀片内使用刀片:

    \/                  \/
    {{ 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 在会话中存储的值。

    请注意,这种方法适用于两种情况:

    • 发生验证错误时。
    • 当您手动刷新字段时。

    这种行为被描述为here on Laravel Docs

    【讨论】:

    • 是的,这就是错误。但不是他说实话。
    • 这个问题本身就令人困惑,他开始问一些东西,然后显示一段无法运行的代码并抛出该错误。我解释了如何解决这个错误,但如果逻辑不起作用,那就是另一个问题了。
    • 标题不言自明,但问题确实含糊不清。
    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 2018-04-11
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多