基本上,我的应用程序有一个管理员(CMS)。我已经包含菜单和子菜单设置,最终填充在我的导航部分。
Name: User
URL: setup/user
Icon: fa fa-user
问题是,如果我添加新菜单(如上所述),我必须在web.php上设置另一条路线,例如:
Route::resource('setup/user','UserController');
嗯,会有很多菜单要创建,我的web.php会以某种方式弄乱很多路线。
我跟着这篇文章,它给了我一个想法,我调整了它并创建了我自己的。
https://laracasts.com/discuss/channels/laravel/dynamically-calling-a-controller-method-in-laravel-5
这就是我所做的:
function wildcard($route, $controller, $verbs = ['get', 'post']) {
$stack = Route::getGroupStack();
$namespace = end($stack)['namespace'];
$controller = ucfirst(strtolower($route)).'Controller';
Route::match($verbs, rtrim($route, '/') . '/{method}', function($method, $params = null) use ($route, $namespace, $controller)
{
$controller = $namespace . '\\' . $controller;
$method = $controller . '@' . $method;
$params
? App::call($method, explode('/', $params))
: App::call($method);
});
}
wildcard('home',null);
我的HomeController:
public function index()
{
return view('pages.common.dashboard');
}
但它并没有在我的索引方法上显示视图,只是空白页面。但它确实得到了方法,因为我可以从方法中转储。
也许有更好的动态路由方式。感谢。
答案 0 :(得分:0)
解决方案:您必须return
App::call()
Route::match($verbs, rtrim($route, '/') . '/{method}', function($method, $params = null) use ($route, $namespace, $controller)
{
$controller = $namespace . '\\' . $controller;
$method = $controller . '@' . $method;
if($params){
// return the App::call
return App::call($method, explode('/', $params));
} else {
// return the App::call
return App::call($method);
}
});