Laravelコントローラーで指定された関数を初期化する方法
P粉404539732
P粉404539732 2024-01-10 16:51:22
0
1
303

クラス内でコード全体を何度も書き直すことなく、特定の変数を初期化してクラス内で再利用したいと考えています。

リーリー

上記の変数は再利用したいものです。

コンストラクタを使ってみた

リーリー

しかし、ブラウザにブレード ビューをロードすると、 関数 App\Http\Controllers\ProfileController::index() へのパラメータが少なすぎます、0 が渡されました が表示されます。

###助けてください?

P粉404539732
P粉404539732

全員に返信(1)
P粉627027031

あなたは概念を混乱させているために問題を抱えています。依存関係の注入、ローカル インスタンス変数、および場合によってはルート モデル バインディングまたはルート変数バインディング。

依存性注入では、Laravel がクラスのインスタンスを提供する必要があります。 Laravel が何かをロードする状況では、通常、DI を使用して未知のものを埋めようとします。コンストラクターについては、変数名 $profileInfoProfile クラスの新しいインスタンスをコンストラクターに提供するように Laravel に依頼します。この変数はコンストラクターで最終的に使用されることはないため、ここでリクエストする必要はありません。

次に (まだコンストラクター内で) ローカル変数 profileInfo を設定し、それをコントローラー クラス インスタンスに割り当てます。

続けて、ルートが index メソッドをトリガーしようとする場合、$profileInfo に対する変数要件があります。 Laravel はこれが何であるかをまったく知りませんし、ルート内の何にも一致しません (ドキュメントの「ルート モデル バインディング」を参照)。したがって、「パラメーターが少なすぎます」というメッセージが表示されます。 この変数が存在しない場合は、profileInfo を事前に設定しておく必要があります。

ローカル変数を保持したい場合は、次のようにすることができます:

リーリー

ここでもう 1 つの提案を検討してください...

これはプロファイルと呼ばれるので、ユーザー モデルに適切なプロファイル レコードを問い合わせる必要があるようです。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート