【问题标题】:Laravel Blade IssueLaravel 刀片问题
【发布时间】:2020-04-08 05:25:41
【问题描述】:

我正在将 laravel 网站从 5.6 升级到 5.8。我有一些表格,如果变量可用,它会将输入值设置为某个值,否则它将保持空白,类似于下面。这在 5.6 上运行良好,但是当我在 5.8 中尝试它的每个实例时,它显示的值为 1。即使我放了类似或 'Joe' 之类的东西,它仍然最终将 1 放在那里。如果我删除 or '' 它会正常工作并显示 $data->name 发送的内容。

{{ $data->name or '' }} 

只是好奇是否有人像我一样看到过这种行为。如果我在控制器或刀片模板中添加 $data,则数据符合预期,而不仅仅是全 1。

谢谢

【问题讨论】:

  • 不知道blade,但如果是纯PHP,那么我建议您使用?? 运算符:echo $data->name ?? '',那么{{ $data->name ?? '' }} 可能会起作用吗?
  • @AlonEitan 似乎做到了。谢谢。奇怪的旧方法不起作用,因为它仍然显示在刀片​​使用的文档中,或者但这同样好。

标签: php laravel laravel-blade


【解决方案1】:

您的代码$data->name or '' 将返回truefalse,如果$data->name 为真则结果为真,如果$data->name 为假则结果为假。如果您的代码在旧版本上运行,那就很奇怪了。

您应该使用?:(三元运算符)或??(空合并运算符)

详情见PHP ternary operator vs null coalescing operator

【讨论】:

    【解决方案2】:

    Laravel or 运算符在 laravel 5.7 中更改为 ??

    Blade“或”运算符已被删除,以支持 PHP 的内置 ?? "null coalesce" 运算符,目的和功能相同

    所以{{ $data->name or '' }} 现在是{{ $data->name ?? '' }}

    【讨论】:

      猜你喜欢
      • 2016-07-11
      • 2018-07-27
      • 2021-12-17
      • 2014-10-13
      • 1970-01-01
      • 2020-11-16
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多