如何在自定义Laravel Nova工具中定义的路由中添加CORS中间件?

时间:2019-02-13 15:55:10

标签: laravel laravel-nova

我正在使用laravel nova和vuejs构建无头的cms。

尝试从https://github.com/barryvdh/laravel-cors注册出色的CORS中间件时遇到问题。我可以从主应用程序获得此功能,但我想将其作为依赖项添加到我的自定义nova工具中。

我只是不知道该怎么做。

我尝试在artisan nova:tool命令生成的routes函数中添加中间件。

/**
 * Register the tool's routes.
 *
 * @return void
 */
protected function routes()
{
    if ($this->app->routesAreCached()) {
        return;
    }

    Route::middleware(\Barryvdh\Cors\HandleCors::class)
       ->prefix('api/meta-blog')
       ->group(__DIR__.'/../routes/api.php');
}

但是当我点击任何api路径时,我从Class Barryvdh\Cors\HandleCors does not exist收到一个错误vendor/laravel/framework/src/Illuminate/Container/Container.php

我认为这是因为中间件未在主应用程序中注册。我正在寻找如何使此第三方新星工具依赖项与主要的laravel路由系统一起工作。

我已经成功地成功使用了其他第三方包装。但不是这个。我可以确认该程序包存在并且已被加载到我的自定义工具自动加载文件中。

谢谢。

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。

在启动功能中,我们可以将中间件推送到api组。

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    ...

    $router = $this->app['router'];
    $router->pushMiddlewareToGroup('api', Barryvdh\Cors\HandleCors::class);
}

然后在路由功能中

/**
 * Register the tool's routes.
 *
 * @return void
 */
protected function routes()
{
    if ($this->app->routesAreCached()) {
        return;
    }

    Route::prefix('api/meta-blog')
        ->group(__DIR__.'/../routes/api.php');
}

希望这对其他人有帮助。