Метод Illuminate\Translation\Translator::getFromJson не существует
После обновления с Laravel 5.8 до Laravel 6.0 я столкнулся с следующей ошибкой:
Метод Illuminate\Translation\Translator::getFromJson не существует
Кто-нибудь знает, как можно обойти эту проблему?
Судя по всему, проблема возникает из-за использования директивы @lang
для вывода сообщений перевода в моем blade-шаблоне.
4 ответ(ов)
Привет, Prasanth!
Методы Lang::get
и Lang::getFromJson
были объединены в Laravel. Теперь следует обновить вызовы метода Lang::getFromJson
на Lang::get
.
Кроме того, рекомендуется выполнить команду php artisan view:clear
, чтобы избежать ошибок Blade, связанных с удалением методов Lang::transChoice
, Lang::trans
и Lang::getFromJson
.
Спасибо!
Попробуйте выполнить команду php artisan view:clear
.
Проблема заключается в том, что ваши файлы представлений были скомпилированы в версии 5.8, и здесь конструкция @lang
была преобразована в Lang::getFromJson
, который теперь удален.
Если команда php artisan view:clear
не работает на сервере Debian, возможно, проблема связана с недостаточными правами доступа.
Попробуйте выполнить следующую команду:
sudo rm storage/framework/views/*
Эта команда удалит все файлы в каталоге views
, что может помочь очистить кеш представлений. Не забудьте проверить права на каталог storage
и его подкаталоги, чтобы убедиться, что ваш веб-сервер имеет необходимые разрешения для записи.
В Laravel 6 вы можете использовать функцию Lang::get()
для получения перевода строки из языкового файла. Предположим, у вас есть файл перевода, который называется messages.php
и находится в директории resources/lang/ru/
. Чтобы получить перевод для ключа your name
, выполните следующие шаги:
- Убедитесь, что у вас есть файл перевода
messages.php
в директорииresources/lang/ru/
с содержимым, например:
return [
'your name' => 'Ваше имя',
];
- В вашем коде вы можете использовать следующий синтаксис для получения перевода:
use Illuminate\Support\Facades\Lang;
$nameTranslation = Lang::get('messages.your name');
Это создаст переменную $nameTranslation
, содержащую переведенное значение. Если ключ не найден, то будет возвращена строка с ключом (в данном случае, 'your name'
).
Также можно использовать хелпер __()
для получения того же результата:
$nameTranslation = __('messages.your name');
Таким образом, вам не нужно беспокоиться о использовании Lang::get()
, если вам удобнее использовать хелперы.
Как вывести сырой SQL-запрос в виде строки из билдера запросов?
Как создать пользовательские вспомогательные функции в Laravel
Форматирование часового пояса для даты Carbon
Laravel валидация: проверка существования с условием по дополнительному столбцу - пользовательское правило валидации
В Laravel, как получить список всех файлов в публичной папке?