如何在配置文件中使用路由助手

时间:2020-06-30 19:41:46

标签: php laravel routes helper

所以我有一个名为services.php的配置文件,其内容类似于

[
    'facebook' => [ 'url' => 'https://...']
]

但是我想要这样:

[
    'facebook' => [ 'url' => url(route('socialite-callback', ['provider' => 'facebook']))]
]

但是tinker带有这样的代码将报告:

Argument 2 passed to Illuminate\Routing\UrlGenerator::__construct() must be an instance of Illuminate\Http\Request, null given, called in /laravel/justitalianwine_ecommerce/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php on line 68

但是,如果我使用第一个一样,然后打开tinker并将其粘贴:

url(route('socialite-callback', ['provider' => 'facebook']))

工作正常

1 个答案:

答案 0 :(得分:1)

我解释了如何here加载配置。

出现此错误的原因“很可能”是在加载配置后加载/引导了辅助方法。

一种实现方法是使用RouteServiceProvider为所需的这些类型用法初始化/设置配置。

class RouteServiceProvider extends ServiceProvider
{
    // other methods and fields...

    public function map()
    {
        $this->mapApiRoutes();
        $this->mapWebRoutes();
        $this->mapServiceRoutes();
    }

    protected function mapServiceRoutes()
    {
        config()->set('services.facebook.url', url(route('socialite-callback', ['provider' => 'facebook'])));
    }
}

编辑:

github中还有5年以上的历史,提到了与您相似的情况。