2017-06-14 139 views
0

我想從Laravel中的控制器的構造函數訪問請求變量。我怎樣才能做到這一點?如何將POST請求傳遞給Laravel中的構造函數?

這是我的路線:

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

,這裏是我的控制器:

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

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

但請求變量總是空。我如何將請求傳遞給構造函數?

+0

任何特定的原因t跟這個? –

+1

你不會因爲Laravel將請求路由到控制器方法'getBookById',而無法向構造函數注入請求。你可以嘗試'['uses'=>'v1 \ BookController @__構造']'。應該工作,但似乎毫無意義 –

回答

-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"); 
相關問題