2017-12-27 141 views
4

我有一堆路線列表,下面提到供您參考。我必須把它做成動態的。如何在laravel路徑文件中編寫動態url方法?

例子:

第一套路線

Route::get('artists/info', '[email protected]'); 
Route::post('artists/records', '[email protected]'); 
Route::post('artists/action', '[email protected]'); 
Route::post('artists', '[email protected]'); 
Route::put('artists/update/{id}', '[email protected]'); 
Route::post('artists/update-status/{id}', '[email protected]'); 

第二套路線

Route::get('albums/info', '[email protected]'); 
Route::post('albums/records', '[email protected]'); 
Route::post('albums/action', '[email protected]'); 
Route::post('albums', '[email protected]'); 
Route::put('albums/update/{id}', '[email protected]'); 
Route::post('albums/update-status/{id}', '[email protected]'); 

看來兩者的路線列表是除了關鍵字「專輯,藝術家一樣, AlbumApiController,ArtistApiController「。所以我需要動態地通過傳遞必要的參數來重新使用該代碼。所以它看起來像下面或任何語法讓它成爲。

grid('albums', 'AlbumApiController'); 

在此先感謝

+0

這很明顯不符合上下文,但您始終可以創建一個捕獲所有路由,即調用一個控制器操作。然後,你有一個數據庫表,所有的路線存儲在一個列和什麼行動/控制器使用等... – TheDeveloper

回答

2

你可以做這樣的事情:

foreach (['artists' => 'ArtistApiController', 'albums' => 'AlbumApiController'] as $route => $controller) { 
    Route::get($route . '/info', $controller . '@getInfo'); 
    Route::post($route . '/records', $controller . '@postRecords'); 
    Route::post($route . '/action', $controller . '@postAction'); 
    Route::post($route, $controller . '@postAdd'); 
    Route::put($route . '/update/{id}', $controller . '@postAdd'); 
    Route::post($route . '/update-status/{id}', $controller . '@postUpdateStatus'); 
} 
2

你真的需要它們是動態的?如果沒有,那麼我會建議將它們保留爲現在的狀態......基本上,路由文件爲您提供了應用程序結構的簡要概述,因此,儘可能讓您的路線儘可能易讀是一個不錯的主意。