V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuyl
V2EX  ›  PHP

laravel 写 api,无法获取到当前 action。

  •  
  •   xuyl · 2018-03-31 14:34:15 +08:00 · 1703 次点击
    这是一个创建于 2428 天前的主题,其中的信息可能已经有所发展或是发生改变。

    api.php 里面是这样的

    <?php
    use Illuminate\Http\Request;
    
    $api = app('Dingo\Api\Routing\Router');
    $api->version('v1',  ['middleware' => 'api.throttle', 'limit' => 1000, 'expires' => 5], function ($api) {
        $api->group(['namespace' => 'App\Http\Controllers', 'middleware' => ['jwt.api.auth', 'cors']], function ($api) {
            $api->post('/auth/login', 'AuthController@postLogin');
            
            $api->group(['middleware' => ['jwt.auth', 'api.logs']], function ($api) {
                $api->get('/test', 'TestController@index');
            });
        });
    });
    

    其中 TestController.php 内容如下:

    <?php
    namespace App\Http\Controllers;
    use App\Http\Controllers\Controller;
    
    class TestController extends Controller
    {
        // 获取全部用户
        public function index()
        {
            return \Route::currentRouteAction();
        }
    }
    

    经测试, 路由/api/test返回为 null。在 web.php 写路由, 能获取到类似App\Http\Controller\XyzController@index的值。猜想是 api.php 里用了Dingo\Api\Routing\Router的原因,那么有什么办法获取到呢?只能放弃使用Dingo\Api\Routing\Router吗?

    xuyl
        1
    xuyl  
    OP
       2018-03-31 14:46:44 +08:00
    已解决:用 app('Dingo\Api\Routing\Router')->currentRouteAction()能获取到和\Route::currentRouteAction()一样的效果,因为 api 里用 dingo/api 的 router 覆盖了 laravel 自身的 router。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5318 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:38 · PVG 16:38 · LAX 00:38 · JFK 03:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.