web-dev-qa-db-ja.com

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'));
    }

この問題の解決にご協力ください!

11
Prince

_$user->website_は空/空白だと思います。

url()ヘルパーメソッド を見ると、Laravelはinstance_$path_がnullの場合、UrlGeneratorの。

したがって、_$user->website_が空の場合、UrlGeneratorが返されるため、htmlspecialcharsがオブジェクトを取得することに関するエラーが発生します。

1つの簡単な解決策は、htmlチャンクをチェックでラップすることです。

_@if($user->website)
    <li>
        ...
    </li>
@endif
_
17
jszobody

私の場合、$brand->products()のようなブレードファイル内の関数を使用し、配列を返していたため、メッセージが表示されていました。

コードを変更して文字列を返すと、エラーはなくなりました。

4
sh6210

私のビューではエラーを表示するために$errors->get('username')を使用していましたが、get()は配列を返すため、これを取得していました。 $errors->first('username')に切り替えると、これが修正されました。

1
braed
  1. HTMLフォームと配列データを送信する入力を確認してください。したがって、このエラーが発生するため、データを文字列形式で送信します。したがって、この配列データを文字列に変換してからpostメソッドに送信します。
0
user11021898