Laravel использует @ function внутри другой @ функции в представлении

#php #html #laravel #sorting #localization

#php #HTML #laravel #сортировка #локализация

Вопрос:

я хочу использовать функцию (@lang) внутри другой функции (@sortablelink).

@lang: изменена локализация в зависимости от предыдущего пользовательского ввода @sortablelink: сортируемые столбцы kysliks (https://github.com/Kyslik/column-sortable )

Вот так:

 @foreach($COLUMNS_TASK as $column => $val)
         <div class="th">
              <a href=""><p class="justify-content-center text-center">@sortablelink($val, @lang('lang.'.$val))</p></a>
         </div>
@endforeach
  

Когда я запускаю этот код, я получаю эту ошибку: Ошибка вызова неопределенной функции lang()

Но когда я пишу это так:

 @foreach($COLUMNS_TASK as $column => $val)
         <div class="th">
              <a href=""><p class="justify-content-center text-center">@sortablelink($val)@lang('lang.'.$val)</p></a>
         </div>
@endforeach
  

Он работает, но он отображает результаты выполнения функций только параллельно и выглядит примерно так:

введите описание изображения здесь

Возможно ли использовать функцию внутри другой функции, подобной этой? Или здесь есть другое решение, которого я не вижу?

Заранее спасибо и хорошего дня.

Ответ №1:

Вы можете вызвать транслятор, чтобы получить желаемое значение, и если вы хотите передать его в качестве второго параметра этой @sortablelink директиве, вы можете:

 @sortablelink($val, __($val))

// some ways to call the translator to get a translation
__($val)
trans($val)
Lang::get($val)
app('translator')->get($val)
  

@lang Директива будет вызывать транслятор и повторять результат.

Документы Laravel 7.x — Локализация — получение строк перевода __ @lang

Документы Laravel 7.x — Фасады — Ссылка на класс фасада Lang

Комментарии:

1. Привет! Спасибо за ваш быстрый и полезный ответ: D Приятно это знать. Я изменил свой код на: «@sortablelink ($val, __($ val))» и это не выдает мне сообщение об ошибке. Однако это не переводится на выбранный язык. Когда я делаю «@lang («lang.».$val)» вне функции @sortablelink (), она переводит все правильно.. странно

2. Неважно.. мне пришлось использовать «@sortablelink($val, __(«lang.».$val))». Большое вам спасибо!

3. конечно, какой бы ключ вам ни понадобился, это просто показывает вам, как использовать функции