在@lang()中打开PHP标签

时间:2019-03-08 10:11:03

标签: php laravel laravel-blade

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

{[item.doucument_type]}返回一个字符串,该字符串是@lang()所需的地址。
 但是,当它放在方括号内时,会在下面抛出错误,它不能与$前缀一起使用。

这里的目的是国际化。

所需结果:

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

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

如果{[item.document_type]}@lang()之外,则不会引发错误

谢谢。

3 个答案:

答案 0 :(得分:1)

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

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

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

如果item javascript 变量,则您无法从刀片服务器模板访问它,并且您试图做的事情是不可能的;您将需要一种完全不同的方法。

如果要将方括号显示给用户,则在刀片视图中需要类似{[@lang(...)]}的内容。如果不是变量,那么您可能想要{[@lang('item.document_type')]}

答案 1 :(得分:1)

在laravel刀片文件中以两种方式使用语言文件参数。

In your file.php inside language folder

<?php

return [
  'variable' => 'this is test message'
];

?>

Laravel刀片文件

{{ @lang('file.variable') }} 
            or 
{{ trans('file.variable') }}

您的输出将是

this is test message

对于您的情况,请使用{{}}刀片发动机支架来安装laravel。 希望对您有所帮助。

答案 2 :(得分:0)

如果要将参数传递给刀片指令(例如@lang($variable)),则不需要花括号。

{{ $item->filename }} - @lang($app_name->otherlanguagefile): @lang($item->document_type) ??