@Pios88

Как правильно настроить маршрутизацию для вложенного модуля в Yii2?

Делаю версионизированное REST ful API. Структура такая:

Modules:
- api:
--- controllers
--------- BookController
--- models
--- Module.php
--- modules:
--------- controllers
-------------- BookController
--------- models
--------- Module.php

BookController:
class BookController extends ActiveController {
    public $modelClass = 'app\modules\api\models\Book';
}


'modules' => [
           'api' => [ 'class' => 'app\modules\api\Module', ],
           'v1' => [ 'class' => 'app\modules\api\modules\v1\Module', ],        
        ],
       'components' => [
          'request' => [ 'parsers' => [ 'application/json' => 'yii\web\JsonParser' ],
          'baseUrl' => ''

'urlManager' => [
            'rules' => [
                '' => 'site/index',
                ['class' => 'yii\rest\UrlRule', 'controller' => 'api/book'],
                ['class' => 'yii\rest\UrlRule', 'controller' => 'api/v1/book'],
                 ],


При запросе GET /api/books или GET /api/v1/books я получаю полный набор данных обо всех книгах.
При попытке усложнить функционал, например создать несколько разных коллекций естественно возникает необходимость добавить в BookController соответствующие экшены. Но при попытке обратиться, например, к свежесозданному экшену, GET /api/books/list или GET /api/v1/books/list я получаю статус 404 и Page not found в теле ответа. А при запросе GET /api/books?list или GET /api/v1/books?list (пробовал ради эксперимента) я получаю просто игнор экшена и полный набор информации о книгах. Причем не важно к какому по наименованию и содержанию экшену я обращаюсь.

Когда включил мозг, сообразил, что, видимо, проблема банально в маршрутизации (я надеюсь). Так как я в этом деле - дуб дерево крепкое, подскажите, как правильно прописать правила маршрутизации, чтобы все корректно работало и для базовых контроллеров\экшенов, и для контроллеров\экшенов модулей, и для контроллеров\экшенов вложенных модулей?
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы