2013-05-28 28 views
0

我想在我的Routes文件中使用一些通配符,因爲它變得太臃腫。比方說,我有一個照片和一個畫廊路線,我決定找到他們下一個「媒體」,「subroute」:Laravel 3.x路由問題 - 使用通配符獲取錯誤的參數值

Route::get('admin/media/(:any)/edit/(:num)', function($p) { 
    dd($p); 
}); 

模具和轉儲給我「」由acessing「http://www.bossplaya.dev/admin/media/galleries/edit/1」,而不是「畫廊1「,如預期。

作品:

Route::get('admin/media/galleries/edit/(:num)', function($p) { 
    dd($p); // Returns "1" 
}); 

有沒有使用這樣的通配符的方法嗎?這將節省我很多時間,並使我的路線文件更清潔。

任何想法?

回答

1

每個通配符添加到URL將成爲您的路線參數,所以在這個例子中,你會發現$type變成「畫廊」和$id「1」 ...

Route::get('admin/media/(:any)/edit/(:num)', function($type, $id) { 
    dd(compact('type', 'id')); 
}); 

如果有是你不想知道什麼是(:any)那麼你可以使用非匹配的正則表達式,如任何原因:

Route::get('admin/media/[^/]+/edit/(:num)', function($id) { 
    dd(compact('id')); 
}); 
+0

驚人!謝謝。 – darksoulsong