lumen怎样实现Laravel中的Route::Controller?

新手上路,请多包涵

如题。lumen怎样实现Laravel中的Route::Controller。
例如:Route::Controller('admin','Admin\AdminController');

阅读 5.6k
2 个回答

在lumen里面是不同的设置。

  1. 你可以在routes.php里面设置:

$app->get('admin', 'AdminController@index');
  1. 开启facades功能(不推荐)。打开app.php然后:

Dotenv::load(__DIR__.'/../');
$app->withFacades();
$app->withEloquent();

我这里有一个不太完美的实现方法。

在controller中添加一个函数:

public function routeDispatch(Request $request, $action = 'index')
{
    $action = strtolower($request->getMethod()) . ucfirst($action);
    if (method_exists($this, $action)) {
        return $this->$action($request);
    }
    throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
}

然后将路由定向到这个方法,比如:

$app->addRoute(['GET', 'POST'], 'route[/{action:.+}]', 'RouteController@routeDispatch');

这种实现的问题就是,首先按照我的routeDispatch的实现方式不能再注入额外的参数了。其次,如果你有 middleware,它还是会先执行middleware的检查,然后才会404之类的判断。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题