Laravel: htmlspecialchars () ожидает, что параметр 1 будет строкой с текстом тега привязки? - PullRequest
2 голосов
/ 13 июля 2020

Первое использование Laravel, и я загрузил проект. Я получаю эту ошибку htmlspecialchars () ожидает, что параметр 1 будет строкой, заданным массивом Я обнаружил, что это связано со следующим:

@guest
<li class="nav-item"><a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a></li>
@if (Route::has('register'))
    <li class="nav-item"><a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a></li>
@endif

Если я удалю {{ __('Login') }} и {{ __('Register') }} ошибка удалена и я могу просмотреть страницу? Как мне решить? В чем может быть причина этой ошибки?

1 Ответ

2 голосов
/ 13 июля 2020

Ошибка говорит, что __('Login') не string. Это означает, что это, скорее всего, массив ключей перевода, так как __() по умолчанию возвращает string (переданный параметр), если перевод недоступен.

Внутри resources/lang/{lang} есть файл с именем login.php:

return [
  'login' => 'Login',
  'register' => 'Register'
];

Чтобы получить доступ к этому переводу, вам необходимо использовать правильный синтаксис:

<li class="nav-item"><a class="nav-link" href="{{ route('login') }}">{{ __('login.login') }}</a></li>
<li class="nav-item"><a class="nav-link" href="{{ route('register') }}">{{ __('login.register') }}</a></li>

Строка, переданная в функцию __(), должна сначала указать файл, за которым следует любое количество ключей (поскольку допустимы вложенные массивы). В обоих случаях login - это файл, за которым следуют ключи login и register.

Эта структура должна быть продублирована во всех resources/lang/{lang}/login.php файлах или локали по умолчанию (в большинстве случаев en).

Полную документацию можно найти здесь: https://laravel.com/docs/7.x/localization

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