我们正在建立一个可以使用的Laravel 4基础项目。我想创建一个默认的路由规则,让开发人员可以轻松地弹出新页面,而不必担心向控制器添加路由,而是可以为任何更复杂的路由/控制器添加其他路由。
我创建了以下路由规则,但我想知道它是否过于夸张。我自己对Laravel还很陌生,所以我不确定我是否做错了这件事,所以我想我应该把它发布出来,并得到一些反馈。
Route::any('{controller}/{action?}/{args?}', function($controller, $action = 'index', $args = '')
{
$cont = "Controller";
$notFound = "NotFound";
$params = explode("/", $args);
$app = app();
if (!class_exists($controller.$cont) || !function_exists($contName.$cont.".".$action)) {
$controller = $notFound;
$action = 'index';
}
$controller = $app->make($controller.$cont);
return $controller->callAction($app, $app['router'], $action, $params);
})
->where(array(
'controller' => '[^/]+',
'action' => '[^/]+',
'args' => '[^?$]+'
));
如果你有大约5条路线,那么这样做没有多大意义,但如果你有很多路线遵循这种模式,那就很有意义了。只要确保你测试你的代码,这样它就不会在生产中崩溃。
顺便说一句,.NET MVC映射默认路由的方式与您的方式非常相似,这使得它非常方便,因为您不必手动映射每个路由。所以我想这是完全正常的。