Laravel 5.3 - htmlspecialchars() ожидает, что параметр 1 будет строкой
Я новичок в laravel, и мне это нравится. Во время работы над проектом в социальных сетях я получил эту ошибку: htmlspecialchars() expects parameter 1 to be string, object given (View: C:\wamp64\www\histoirevraie\resources\views\user\profile.blade.php)
Я проверил несколько вопросов на этом сайте, но я не нашел вопроса, который решает мою проблему.
это то, что мой profile.blade.php
состоит из:
<ul class="profile-rows">
<li>
<span class="the-label">Last visit: </span>
<span class="the-value mark green">{{ \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $user->lastVisit)->diffForHumans(\Carbon\Carbon::now())}}</span>
</li>
<li>
<span class="the-label">Member since: </span>
<span class="the-value mark light-gray">{{ $user->created_at->format('F Y') }}</span>
</li>
<li>
<span class="the-label">Profile views: </span>
<span class="the-value mark light-gray">5146</span>
</li>
<li>
<span class="the-label">Living In: </span>
<span class="the-value">{{ $user->town }}</span>
</li>
<li>
<span class="the-label">Website: </span>
<span class="the-value"><a href="{{ url($user->website) }}">{{ $user->website }}</a></span>
</li>
</ul>
Вся информация о пользователе предоставляется контроллером:
public function index($username){
$user = User::where('username', $username)->first();
return view('user.profile', compact('user'));
}
Пожалуйста, помогите мне решить эту проблему!
Ответы
Ответ 1
Я думаю, что ваш $user->website
пуст/пуст.
Если вы посмотрите на url()
, Laravel вернет экземпляр UrlGenerator
, если $path
имеет значение null.
Итак, в вашем случае, если $user->website
пуст, вы получите UrlGenerator
назад и, следовательно, свою ошибку в отношении htmlspecialchars
получения объекта.
Одним простым решением было бы обернуть чек html с помощью проверки:
@if($user->website)
<li>
...
</li>
@endif
Ответ 2
В моем случае я использовал функцию внутри файла blade файла, например $brand->products()
, и он возвращал массив, поэтому я видел сообщение.
когда я изменил свой код и вернул строку, ошибка исчезла.
Ответ 3
Я получил это, потому что, по моему мнению, я использовал $errors->get('username')
чтобы показать ошибки, но get()
возвращает массив. Переключение на $errors->first('username')
исправило это.
Ответ 4
- Проверяя свою HTML-форму и введенные вами данные, вы отправляете данные массива, поэтому они выдают эту ошибку, поэтому отправляете данные в строковом формате, поэтому преобразуйте эти данные массива в строку, а затем отправьте в нее методом post.