2015-05-05 75 views
25

我是Laravel 5的新手,我正嘗試使用新的Form Request來驗證我的應用程序中的所有表單。如何在Laravel 5表單請求中使用請求路由參數?

現在我被困在一個地方,我需要刪除一個資源,並且我創建了一個DeleteResourceRequest來使用授權方法。

問題是我需要找到什麼id在路由參數中被請求,但我看不到如何得到它的授權方法。

我可以使用id在控制器方法如下所示:

public function destroy($id, DeletePivotRequest $request) 
{ 
    Resource::findOrFail($id); 
} 

可是如何才能讓這個在表單請求的授權方式工作?

回答

44

這很簡單,只需使用route()方法即可。假設你的路線參數被稱爲id

public function authorize(){ 
    $id = $this->route('id'); 
} 
+0

謝謝你的快速反應(存根inventory/manufacturers的最後部分的單一版本)。我做了dd($ this-> route('id'));在授權方法中。它返回null。 :( – Rohan

+5

如果你使用資源路由,參數的名字應該是資源的名字,例如'post',如果你有'Route :: resource('post',...)' – lukasgeiter

+0

是的,我想它最終通過拋棄他的路由對象本身。非常感謝你。:) – Rohan

5

您可以訪問通過照亮路線參數值\ HTTP \ Request實例

public function destroy($id, DeletePivotRequest $request) 
{ 
    if ($request->route('id')) 
    { 
     // 
    } 

    Resource::findOrFail($id); 
} 
4

Laravel 5.2,從控制器內:

use Route; 

... 

Route::current()->getParameter('id'); 

我發現這很有用,如果你想使用多個URL參數的多個路由使用相同的控制器方法,也許所有的參數並不總是目前或可能以不同的順序出現...

getParameter('id')會給你正確的答案,無論{id}在URL中的位置如何。

Laravel Docs: Accessing the Current Route

0

我來到這裏尋找答案,那種發現它的意見,所以想澄清他人使用資源的路線試圖在一個表單請求

使用此提到在他的評論盧卡斯: 鑑於資源控制器Route::resource('post', ...)您可以使用該參數將被命名爲post

這是有用的給我,但不是很完整。看起來該參數將是資源存根的最後部分的單數版本。

在我的情況,路線被定義爲$router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController');

和可用參數爲manufacturer