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

2018-03-31 14:34:15 +08:00
 xuyl

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吗?

1703 次点击
所在节点    PHP
1 条回复
xuyl
2018-03-31 14:46:44 +08:00
已解决:用 app('Dingo\Api\Routing\Router')->currentRouteAction()能获取到和\Route::currentRouteAction()一样的效果,因为 api 里用 dingo/api 的 router 覆盖了 laravel 自身的 router。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/443125

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX