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