在Laravel 10中,我的路由结构如下:
Route::group(['middleware' => ['permission:edit-settings']], function () {
$module_name = 'settings';
$controller_name = 'SettingController';
Route::get("$module_name/{settingModule?}", "$controller_name@index")
});
我试过
Route::get("$module_name/{settingModule?}", "$controller_name@index")->name(function ($parameters) {
$settingModule = $parameters['settingModule'] ?? 'settings';
return $settingModule . 'index';
});
我的要求是根据路由参数动态生成路由名称。但它抛出错误Object of class Closure could not be converted to string
感谢你的帮助。
先谢谢你了。
1条答案
按热度按时间66bbxpm51#
在Laravel中,可以使用
name()
方法动态生成路由名称。但是,不能直接将闭包传递给name()
方法。要实现基于route参数的动态路由名称,可以使用as()
方法。下面是一个如何实现此目标的示例:
在本例中,
as()
方法用于动态生成路由名称。它接受一个字符串作为参数,因此您可以将路由参数和其他值连接起来,形成路由的唯一名称。在这种情况下,路由名称将生成为setting.index
或setting.someParamValue.index
,具体取决于settingModule
参数。请注意,路由名称在整个应用程序中应该是唯一的,以避免冲突。