2017-06-14 9 views
0

私はLaravelのコントローラのコンストラクタからリクエスト変数にアクセスしたいと思います。これどうやってするの?LaravelでPOSTリクエストをコンストラクタに渡すには?

Route::post('bookGetById',  ['uses' => 'v1\[email protected]']); 

とここに私のコントローラです:

これが私のルートである

public function __construct(Request $request = null) 
{ 
    parent::__construct(); 

    $this->bookStructure = new bookStructure($request->imageHeight); 
} 

が、リクエスト変数は常にnullです。リクエストをコンストラクタに渡すにはどうすればよいですか?

+0

tの具体的な理由これを飼っている? –

+1

コントローラメソッド 'getBookById'にルーティングするとき、Laravelがリクエストをコンストラクタに注入しないので、あなたはできません。あなたは '['uses =>' v1 \ BookController @__ construct ']'を試すことができます。動作しなければならないが無意味なように見える –

答えて

-1

あなたはリクエストをクラスコンストラクタに渡す方法を尋ねていますが、それを再考し、リクエストを検証し、検証されたリクエスト変数でクラスをインスタンス化するコントローラに渡すことができます。

+0

なぜダウン投票?! –

+0

私はdownvoteをしませんでしたが、これは質問ではなく回答であるべきだから、これは答えではありません。 – apokryfos

0

使用しているlaravelのバージョンはわかりませんが、5.2以降ではコントローラがリクエストのバインド前に作成されていると思います。回避策があります:

public function __construct() 
{ 
    parent::__construct(); 
    $this->middleware(function (Request $r, $next) { 
     $this->bookStructure = new bookStructure($request->imageHeight); 
     return $next($r); 
    }); 
} 

私は、これはサービスコンテナ経由でやって推薦するしかし:

ファイルAppServiceProvider

$this->app->bind("bookstructure.withheight", function ($app) { 
    return new bookStructure($app->make("request")->get("imageHeight",0)); 
}); 

あなたは経由して、それを必要な場所あなたのbookStructureをインスタンス化することができます

app()->make("bookstructure.withheight"); 
関連する問題