Открывайте теги PHP внутри @lang () - PullRequest
0 голосов
/ 08 марта 2019

Мне нужно передать значение, возвращенное из {[item.document_type]} внутри ассоциации Langvel lang @lang() в блейд-файле, но получить неопределенную ошибку переменной в моем браузере.

{[item.doucument_type]} возвращает строку, котораяэто адрес, необходимый для @lang().
Однако, если он находится внутри скобок, он выдает ошибку ниже, он не работает с префиксом $.

Цель здесь - интернационализация.

Желаемый результат:

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

Ошибка: использование неопределенного постоянного элемента - предполагаемый «элемент» (это приведет к ошибке в будущей версии PHP)

Ошибка не выдается, если {[item.document_type]} находится снаружи @lang()

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 08 марта 2019

@lang ожидает строку, но вы передаете {[item.document_type]}, которая не является строкой (она не заключена в кавычки) и не является переменной, поэтому PHP пытается интерпретировать ее как константу.Вот откуда возникает ошибка Use of undefined constant (обратите внимание, что в сообщении об ошибке указано неопределенное константа , а не неопределенное переменная ).

{[]} не является блейд-тегом,Используете ли вы другой шаблонный фреймворк (например, javascript) в дополнение к blade-серверу, или вы пытаетесь отобразить буквальные скобки пользователю, или это ошибка?

Я подозреваю, что вы хотите что-то вроде @lang($item['document_type'])или @lang($item->document_type), предполагая, что item - это переменная PHP , передаваемая в ваше представление.

Если item является переменной javascript , то вы не можете получить доступэто из вашего шаблона лезвия и то, что вы пытаетесь сделать, невозможно;вам понадобится совершенно другой подход.

Если вы хотите, чтобы скобки отображались пользователю, то вам нужно что-то вроде {[@lang(...)]} в вашем блейд-представлении.Если это не переменная, то, возможно, вы хотите {[@lang('item.document_type')]}

1 голос
/ 08 марта 2019

используйте параметр языкового файла двумя способами в файле лезвия 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

В вашем случае, пожалуйста, используйте {{}} кронштейны двигателя для лезвия.Надеюсь, это поможет.

0 голосов
/ 08 марта 2019

Вам не нужны фигурные скобки, если вы передаете параметр в директиву blade-сервера, например @lang($variable).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...