Регистрация Dingo Api в RouteServiceProvider

Я читал, что таким образом можно указать пространство имен для Динго

$api = app('Dingo\Api\Routing\Router');

$api->version('v1', ['namespace' => 'App\Http\Controllers'], function ($api) {
   $api->get('sites', 'SiteController@index');
   $api->get('sites/{site}', 'SiteController@show');
   $api->post('sites', 'SiteController@store');
   $api->put('sites/{site}', 'SiteController@update');
   $api->delete('sites/{site}', 'SiteController@delete');
});

Тем не менее, у меня есть несколько файлов с маршрутами API, так что я не хочу связываться с пространством имен и хотел бы указать пространство имен в Laravel таким образом

protected function mapDingoApiRoutes() {
        Route::group([
            'middleware' => 'api',
            'namespace' => $this->namespace,
        ], function ($api) {
            require base_path('routes/api/sites.api.php');
            require base_path('routes/api/skills.api.php');
            require base_path('routes/api/socials.api.php');
        });
    }

Однако оказалось, что Динго не видит эту декларацию пространства имен, и я не могу сделать что-то вроде $api->group()

1 ответ

Решение

Решено таким образом

...
use Dingo\Api\Routing\Router;

class RouteServiceProvider extends ServiceProvider
{
...

public function map()
    {
        $this->mapDingoApiRoutes(app('Dingo\Api\Routing\Router'));

        $this->mapWebRoutes();
    }

protected function mapDingoApiRoutes(Router $api) {
        $api->group([
            'version' => 1,
            'middleware' => 'api',
            'namespace' => $this->namespace,
        ], function ($api) {
            require base_path('routes/api/sites.api.php');
            require base_path('routes/api/skills.api.php');
            require base_path('routes/api/socials.api.php');
        });
    }

...
}
Другие вопросы по тегам