私のコントローラの中には、複数のメソッドに渡される一般的なルートパラメータがあります。これらのパラメータのいくつかは、同じパラメータを渡し、これらのパラメータを使用する各コントローラメソッド内で同じ処理メソッドを呼び出す必要がある余分な処理(文字列処理)を必要とします。コードを複製するのではなく、コントローラのコンストラクタメソッドで、そのコントローラの特性とその特性への呼び出しが含まれています。Laravelコントローラコンストラクタの問題
これはうまくいく、これらのパラメータをクラスのプロパティにバインドすることができ、私のすべての方法でアクセスできます。問題は、artisan route:list
のようなコントローラをインスタンス化する職人コマンドを実行する場合です。そのコマンドを実行しているとき、私は次のエラーを取得する:
Call to a member function getParameter() on null
私はルートまたはRequestオブジェクトが存在しないので、職人を実行しているときにRoute::current()
の呼び出しがnull
を返しますので、これは知っているが、私は自分がコメントした見つけます私の特性のコードを外に出して、私のルートのリストを取得してください。私は、起こりうる他の問題もあると確信しています。
私の質問は、どうすればこれをよりクリーンにすることができますか?私が現在考えることができる唯一の解決策は、すべてのコントローラメソッドでパラメータ登録メソッドを呼び出すことですが、私はそれをしたくありません。何か案は?
いくつかの例を含めることができればうれしいです。 – imrealashu
これはかなり簡単な質問です。コントローラのコンストラクタ関数内の 'Route'と' Request'ファサードに、 'artisan'コマンドと衝突することなくアクセスする方法が必要です。この場合の例は不要です。 – samrap
'if(php_sapi_name()!= 'cli'){//リクエストと疎開}'を使うことができます。 –