ホームページ  >  に質問  >  本文

Laravelコントローラーで指定された関数を初期化する方法

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

リーリー

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

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

リーリー

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

###助けてください?

P粉404539732P粉404539732306日前294

全員に返信(1)返信します

  • P粉627027031

    P粉6270270312024-01-11 14:11:54

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

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

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

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

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

    リーリー

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

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

    リーリー

    返事
    0
  • キャンセル返事