首页 > 解决方案 > Laravel:htmlspecialchars() 期望参数 1 是字符串,带有锚标记文本?

问题描述

第一次使用 Laravel,我已经下载了一个项目。我得到这个错误htmlspecialchars() Expects parameter 1 to be string, array given I've found it is due to the following:

@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') }}错误被删除并且我可以查看页面?我该如何解决?此错误的原因可能是什么?

标签: laravel

解决方案


错误是说这__('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是文件,后跟键loginregister

此结构应在所有resources/lang/{lang}/login.php文件中重复,否则将使用默认语言环境(在大多数情况下en)。

完整的文档可以在这里找到:https ://laravel.com/docs/7.x/localization


推荐阅读