2014-07-08 192 views
0

我已經在我的routes.php文件以下Laravel路線::資源命名

Route::resource('g', 'GameController'); 

我通過HTML::linkRoute('g.index', 'Title', $slug)產生一個鏈接到http://domain/g/demo-slug

我所希望做的是鏈接到這些生成的路由驗證是否可以在一個位置聲明前綴,以便在URL結構發生變化時不尋找鏈接。

例如,我想改變http://domain/g/demo-slughttp://domain/video-games/demo-slug

我希望能與標準路由都使用了類似的功能,但是這似乎並沒有提供給資源的路線。

Route::get('/', array('as' => 'home', 'uses' => '[email protected]')); 

回答

1

據我知道這是真的,你不能命名爲資源控制器(sitation需要)的路線,但你可以容納他們使用Route::group()有前綴的共同空間。您甚至可以提供一個名稱空間,這意味着您可以快速地將另一個全部api換出。

Route::group(array(
    'prefix' => 'video-games', 
    'before' => 'auth|otherFilters', 
    'namespace' => '' // Namespace of all classes used in closure 
), function() { 
    Route::resource('g', 'GameController'); 
}); 

更新

它看起來像資源控制器內部給出的名字,這將使意義,因爲它們是按名稱而不是URL內部簡稱。 (php artisan routes,你會看到給資源路由的名字)。

這將解釋爲什麼你不能命名,或者事實證明實際情況是這樣,請重命名資源路由。

我想你可能不是在尋找這個,但Route:group是你最好的選擇,保持與共同的共享前綴的資源集合,但你的網址將需要保持硬編碼。

+0

下,難道我的前綴路線仍然存在上述問題? 'domain.g.index'將被硬編碼而不是'g.index'。有沒有更好的方法來創建基於資源路徑的鏈接? –

+0

在答案中添加了部分 –

1

Route :: group()需要一個'前綴'。如果你把Route :: resource()放在裏面,那應該可以。

切,我覺得這是讀好:

Route::get('/', array('uses' => '[email protected]', 'as' => 'home')); 
0

您可以使用下面的語法

Resource::route('g', 'GameController', ['names' => [ 
    'index' => 'games.index', 
    'create' => 'games.create', 
    ... 
]]) 

這意味着,如果你可以使用你的意見{!! route('games.index') !!}甚至給自定義名稱資源路線決定將URL模式更改爲其他內容。

Documented here