首页 > 解决方案 > 在 @lang() 中打开 PHP 标签

问题描述

我需要在刀片文件中传递从{[item.document_type]}Laravel 语言关联内部返回的值,@lang()但在浏览器中出现未定义变量错误。

{[item.doucument_type]}返回一个字符串,该字符串是@lang().
但是,当它在括号内时,它会在下面抛出错误,它不适用于$前缀。

这里的目的是国际化。

期望的结果:

{[item.filename]} - @lang('app_name.otherlanguagefile'): @lang({[item.document_type]})

错误:使用未定义的常量项 - 假定为“项”(这将在 PHP 的未来版本中引发错误)

{[item.document_type]}如果在外面,错误不会抛出@lang()

提前致谢。

标签: phplaravellaravel-blade

解决方案


@lang需要一个字符串,但您传递{[item.document_type]}的不是字符串(它没有被引用)而不是变量,因此 PHP 试图将其解释为常量。这就是错误Use of undefined constant的来源(请注意,错误是 undefined constant,而不是 undefined variable)。

{[]}不是刀片标签。除了刀片之外,您是否还在使用其他模板框架(例如 javascript),或者您是否试图向用户显示文字括号,或者这是一个错误?

我怀疑你想要类似@lang($item['document_type'])or的东西@lang($item->document_type),假设item是一个PHP变量被传递给你的视图。

如果itemjavascript变量,那么您无法从刀片模板访问它,并且您尝试做的事情是不可能的;您将需要一种完全不同的方法。

如果您希望向用户显示括号,那么您需要{[@lang(...)]}在刀片视图中显示类似的内容。如果它不是一个变量,那么也许你想要{[@lang('item.document_type')]}


推荐阅读