当前位置: 首页 > 知识库问答 >
问题:

php - 如何直接点击lumen的路由的控制器跳转到相关文件?

慕皓君
2024-02-08
$router->group(['namespace'=>'\App\Http\Controllers','prefix' => 'api'], function () use ($router) {    $router->post('register', 'UserController@register');    $router->post('login', 'UserController@login');    $router->post('info', 'UserController@info');    $router->post('logout', 'UserController@logout');});

laravel的路由可以使用Route::get('/user', [UserController::class, 'index']);

共有1个答案

仉昂熙
2024-02-08

看了一下源码,lumen 没办法支持 Laravel 中的这种写法,不过可以扩展一下,编辑一下 bootstrap/app.php 里面,有关 $app 这个变量初始化的地方,改成下面这样。

$app = new class (dirname(__DIR__)) extends Laravel\Lumen\Application {    protected function callActionOnArrayBasedRoute($routeInfo)    {        $action = $routeInfo[1]['target'] ?? $routeInfo[1];        if (            is_array($action)            && count($action) === 2            && class_exists($action[0])            && method_exists($action[0], $action[1])        ) {            try {                [$controller, $method] = $action;                return $this->prepareResponse($this->call([$this->make($controller), $method], $routeInfo[2]));            } catch (HttpResponseException $e) {                return $e->getResponse();            }        }        return parent::callActionOnArrayBasedRoute($routeInfo);    }};

(注:这段代码是我手敲的,未做完整测试)

然后就可以像下面这样使用了,并且 IDE 可以提示跳转。

$router->get('/foo', [    'target' => [\App\Http\Controllers\ExampleController::class, 'index']]);$router->get('/foo', [\App\Http\Controllers\ExampleController::class, 'index']);

在旧版的 PhpStorm 上,这样可能还是不可以跳转,因为 \Laravel\Lumen\Routing\Router::get 方法的第二个参数的签名是 mixed 类型的,并不是 callback,所以 IDE 可能还是无法识别。

可能还需要添加一个提示文件(在 laravel-ide-helper 里面加一下也可以)。


当然,如果你只需要提示+跳转的话,还有一个办法,那就是发动钞能力,PhpStorm 有个 Laravel Idea 是可以的,不过这是一个付费插件,3$/mo


另外,不太建议使用 lumen 作为新项目,因为项目复杂了之后,都会变成 Laravel 的形状。

 类似资料:
  • 本文向大家介绍react-router JS 控制路由跳转实例,包括了react-router JS 控制路由跳转实例的使用技巧和注意事项,需要的朋友参考一下 Link组件用于正常的用户点击跳转,但是有时还需要表单跳转、点击按钮跳转等操作。这些情况怎么跟React Router对接呢? 下面是一个表单。 第一种方法是使用browserHistory.push 第二种方法是使用context对象。

  • 我的页面是三级嵌套路由,结构类似于 /message/detail/0。 但当我使用 this.$router.push('/index') 返回首页的时候,页面路径变成了/message/detail/index。 请问我该如何解决这个问题,希望从 /message/detail/0 页面直接跳转到 /index。 这个是路由配置的JS:

  • route(Object) 此为一个路由跳转方法,内部是对uni多个路由跳转api的封装,更方便使用 Object参数说明: 参数名 类型 默认值 是否必填 说明 type String navigateTo false navigateTo或to对应uni.navigateTo,redirect或redirectTo对应uni.redirectTo,switchTab或tab对应uni.swit

  • 我这段代码可以生效,但是有个问题,不是动态化的。 参数类型我得写UserDto.class,我想动态化,我不知道参数类型到底是什么。

  • 英文原文: http://emberjs.com/guides/routing/setting-up-a-controller/ URL的改变同时也可能改变显示的模板。而模板只有当其搭载了需要呈现的信息才有用。 在Ember.js中,模板从控制器中获取需要呈现的信息。 内置的两个控制器Ember.ObjectController和Ember.ArrayController,使控制器可以非常方便的呈

  • 我正在尝试在我的nginx服务器上设置vue路由器。我遇到的问题是,如果我直接在浏览器中输入url,我的路线就不起作用。 我尝试了vue路由器文档中描述的服务器配置,以及建议的堆栈溢出类似配置。我当前的nginx位置配置如下: 所做的就是将任何路径重定向到我的根组件(path:),而不是。这确实有意义,并且似乎只重定向到索引文件。我如何重定向直接链接的到路由在我的VueJS应用程序? 以下是我的v