クラス内でコード全体を何度も書き直すことなく、特定の変数を初期化してクラス内で再利用したいと考えています。
上記の変数は再利用したいものです。
コンストラクタを使ってみた
しかし、ブラウザにブレード ビューをロードすると、 関数 App\Http\Controllers\ProfileController::index() へのパラメータが少なすぎます、0 が渡されました が表示されます。
関数 App\Http\Controllers\ProfileController::index() へのパラメータが少なすぎます、0 が渡されました
あなたは概念を混乱させているために問題を抱えています。依存関係の注入、ローカル インスタンス変数、および場合によってはルート モデル バインディングまたはルート変数バインディング。
依存性注入では、Laravel がクラスのインスタンスを提供する必要があります。 Laravel が何かをロードする状況では、通常、DI を使用して未知のものを埋めようとします。コンストラクターについては、変数名 $profileInfo で Profile クラスの新しいインスタンスをコンストラクターに提供するように Laravel に依頼します。この変数はコンストラクターで最終的に使用されることはないため、ここでリクエストする必要はありません。
$profileInfo
Profile
次に (まだコンストラクター内で) ローカル変数 profileInfo を設定し、それをコントローラー クラス インスタンスに割り当てます。
profileInfo
続けて、ルートが index メソッドをトリガーしようとする場合、$profileInfo に対する変数要件があります。 Laravel はこれが何であるかをまったく知りませんし、ルート内の何にも一致しません (ドキュメントの「ルート モデル バインディング」を参照)。したがって、「パラメーターが少なすぎます」というメッセージが表示されます。 この変数が存在しない場合は、profileInfo を事前に設定しておく必要があります。
index
ローカル変数を保持したい場合は、次のようにすることができます:
ここでもう 1 つの提案を検討してください...
これはプロファイルと呼ばれるので、ユーザー モデルに適切なプロファイル レコードを問い合わせる必要があるようです。
あなたは概念を混乱させているために問題を抱えています。依存関係の注入、ローカル インスタンス変数、および場合によってはルート モデル バインディングまたはルート変数バインディング。
依存性注入では、Laravel がクラスのインスタンスを提供する必要があります。 Laravel が何かをロードする状況では、通常、DI を使用して未知のものを埋めようとします。コンストラクターについては、変数名
$profileInfo
でProfile
クラスの新しいインスタンスをコンストラクターに提供するように Laravel に依頼します。この変数はコンストラクターで最終的に使用されることはないため、ここでリクエストする必要はありません。次に (まだコンストラクター内で) ローカル変数
profileInfo
を設定し、それをコントローラー クラス インスタンスに割り当てます。続けて、ルートが
index
メソッドをトリガーしようとする場合、$profileInfo
に対する変数要件があります。 Laravel はこれが何であるかをまったく知りませんし、ルート内の何にも一致しません (ドキュメントの「ルート モデル バインディング」を参照)。したがって、「パラメーターが少なすぎます」というメッセージが表示されます。 この変数が存在しない場合は、profileInfo
を事前に設定しておく必要があります。ローカル変数を保持したい場合は、次のようにすることができます:
リーリーここでもう 1 つの提案を検討してください...
これはプロファイルと呼ばれるので、ユーザー モデルに適切なプロファイル レコードを問い合わせる必要があるようです。
リーリー