MasterGerold
@MasterGerold

Yii2 rest api 404 ошибка, что не так сделал?

Доброго времени суток! Делал всё как по инструкции но чувствую что что-то 100% не правильно написал, так как инструкция сделана по проще, а у меня тут немного не всё просто.
Использую advanced шаблон, есть такой путь: backend/modules/media_library/сontrollers/rest/
В этой папке лежить MediaLibraryController.php
<?php
namespace backend\modules\media_library\controllers\rest;

use yii\rest\ActiveController;

class MediaLibraryController extends ActiveController
{
    public $modelClass = 'backend\modules\media_library\models\MediaLibrary';
}

В конфиг backend файла прописал [b]parsers[/b] и контроллер:
'components' => [
    'request' => [
        'csrfParam' => '_csrf-backend',
        'baseUrl' => '/admin',
        'parsers' => [
            'application/json' => 'yii\web\JsonParser',
        ],
        'cookieValidationKey' => 'key',
    ],
    ...
    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            '' => 'site/index',
            '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
            ['class' => 'yii\rest\UrlRule', 'controller' => 'media_library'],
        ],
    ]
],

Ну и понятно при запросе https://site.com/media_librarys и https://site.com/admin/media_librarys выкидывает 404 ошибку...
Подскажите плиз как быть и что не так делаю?
Заранее благодарен за ответы!
  • Вопрос задан
  • 1127 просмотров
Решения вопроса 1
MasterGerold
@MasterGerold Автор вопроса
Ошибка была в строке где я указывал контроллер, он понятное дело бы указан неверно.
Исправил на
['class' => 'yii\rest\UrlRule', 'controller' => 'media-library/rest/media-library']
и всё работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
kimono
@kimono
Web developer
А вы модуль добавили в конфиг?
'components' => [
  //...
],
'modules' => [
  'media_librarys' => [
    'class' => backend\modules\media_library\Module::class
  ]
]
Ответ написан
Для таких же ищущих ответ на этот вопрос поясню:
1. UrlRule ждет пропертю controller, которая в доке описана как ID контроллера, но это не совсем так. Если используете Advanced template, то надо указать и имя модуля moduleName/controller (user/auth).
2. Если вы также, как и я используете единственное число в именовании, то не забудьте выключить нафиг pluralize.
Тогда конечный вариант для меня выглядел так
['class' => 'yii\rest\UrlRule', 'controller' => 'user/auth', 'pluralize' => false],
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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