如何在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');
在此先感谢
答
你可以做这样的事情:
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');
}
答
你真的需要它们是动态的?如果没有,那么我会建议将它们保留为现在的状态......基本上,路由文件为您提供了应用程序结构的简要概述,因此,尽可能让您的路线尽可能易读是一个不错的主意。
这很明显不符合上下文,但您始终可以创建一个捕获所有路由,即调用一个控制器操作。然后,你有一个数据库表,所有的路线存储在一个列和什么行动/控制器使用等... – TheDeveloper