如何在laravel路径文件中编写动态url方法?

问题描述:

我有一堆路线列表,下面提到供您参考。我必须把它做成动态的。如何在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

你可以做这样的事情:

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'); 
} 

你真的需要它们是动态的?如果没有,那么我会建议将它们保留为现在的状态......基本上,路由文件为您提供了应用程序结构的简要概述,因此,尽可能让您的路线尽可能易读是一个不错的主意。