dingo-route 不能根据路由别名获取路由?

问题描述:

使用dingo官方文档的方法获取路又失败。

// 路由文件
$api = app('Dingo\Api\Routing\Router');

$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api',
    'middleware' => [
        'serializer:array',
        'bindings',
        'cors',
    ],
], function ($api) {
    // ********************* 小程序前台用户 token 非验证路由组 ********************* //
    $api->group(['middleware' => [], 'prefix' => 'miniprogram'], function ($api) {
        $api->any('pay/{mini_appid}/notify', 'PaymentController@wechatNotify')->name('api.miniprogram.pay.notify');
    });
});

// 控制器
use Dingo\Api\Routing\UrlGenerator;
use Illuminate\Http\Request;

public function index(Request $request)
{
    $UrlGenerator = new UrlGenerator($request);
    $cla_url = $UrlGenerator->version('v1')->route('api.miniprogram.pay.notify', ['mini_appid' => 'asd123']);
    $app_url = app(UrlGenerator::class)->version('v1')->route('api.miniprogram.pay.notify', ['mini_appid' => 'asd123']);

    return $this->response->array([$cla_url, $app_url]);
}

报错信息:

 "message": "Call to a member function getByName() on null",
    "status_code": 500,
    "debug": {
        "line": 301,
        "file": "/vagrant/code/suokewangluo/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php",
        "class": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",

或者谁有这方面的经验分享下。

KangST
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

解决方案是使用完整命名空间生成路由,或者使用全局函数url创建路由。

4年前 评论
chinaz 4年前
KangST (作者) (楼主) 4年前
讨论数量: 5

社区 dingo 文档里有一章内部调用,去看看吧

4年前 评论

@KongWeiMin 你说的是这个吧?

现在你可以为命名的路由生成 URL 了。

app('Dingo\Api\Routing\UrlGenerator')->version('v1')->route('users.index');

我上面贴的code 就是出自文档。我问题阐述中也使用了此方法,报错就是处在他这个方法。请认真看我的代码。

4年前 评论

不知道你的dingo是什么版本的,2.0的版本我都是这样写的。

 $api->post('path', ['uses' => 'controller@method', 'as' => 'name']);

 app('Dingo\Api\Routing\UrlGenerator')->version('v1')->route('name'),
4年前 评论

@BANice 我的应该也是2.0我的就是套了几层路由组,这个问题应该不至于导致报错

4年前 评论

解决方案是使用完整命名空间生成路由,或者使用全局函数url创建路由。

4年前 评论
chinaz 4年前
KangST (作者) (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!