#php #laravel-5.3
#php #laravel-5.3
Вопрос:
Я новичок в laravel, и мне это нравится. Во время работы над проектом в социальных сетях я получил эту ошибку: htmlspecialchars() expects parameter 1 to be string, object given (View: C:wamp64wwwhistoirevraieresourcesviewsuserprofile.blade.php)
Я проверил некоторые вопросы на этом сайте, но я не нашел вопроса, который решает мою проблему.
это то, из чего сделан мой profile.blade.php
:
<ul class="profile-rows">
<li>
<span class="the-label">Last visit: </span>
<span class="the-value mark green">{{ CarbonCarbon::createFromFormat('Y-m-d H:i:s', $user->lastVisit)->diffForHumans(CarbonCarbon::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. Может быть, некоторые из переменных между
{{ }}
являются объектом? Попробуйте сбросить их все в контроллере.2.
$user->website
Возможно, пустой?url()
Вспомогательный метод предоставит вам экземплярUrlGenerator
, если вы не предоставите ему строку.3. @jszobody вы правы. Отправьте свой ответ, пожалуйста
4. в моем случае я дал объект внутри
{{ }}
Ответ №1:
Я думаю, что ваш $user->website
пустой / пустой.
Если вы посмотрите на url()
вспомогательный метод, Laravel вернет экземпляр UrlGenerator
if $path
is null .
Таким образом, в вашем случае if $user->website
пусто, вы получите UrlGenerator
возврат и, следовательно, свою ошибку о htmlspecialchars
получении объекта.
Одним из простых решений было бы обернуть ваш html-фрагмент проверкой:
@if($user->website)
<li>
...
</li>
@endif
Ответ №2:
В моем случае я использовал функцию внутри блейд-файла, например $brand->products()
, и она возвращала массив, вот почему я видел сообщение.
когда я изменил свой код и вернул строку, ошибка исчезла.
Ответ №3:
Я получил это, потому что, на мой взгляд, я использовал $errors->get('username')
для отображения ошибок, но get()
возвращает массив. Переключение на $errors->first('username')
это исправлено.