Какие типы маршрутов генерирует Yii2 rest \ UrlRule из имени контроллера из нескольких слов? - PullRequest
1 голос
/ 11 июля 2019

Полагаю, мне следует извиниться за такой глупый вопрос, но какой URL будет генерировать Yii2, скажем, для BigLongControllerNameController.php?

Думаю, это должно быть / big-long-controller-name /?

не работает в моем случае, я получаю 404

Я также пытался использовать biglongcontrollername, big_long_controller_name, bigLongControllerName, либо в браузере, либо в конфигурации. Документация не помогает, либо я слепой, либо правила маршрутизации REST для всех достаточно очевидны, чтобы не указывать их в документации Yii2

Мои текущие правила маршрутизации

        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' =>
                    [
                        'group',
                        'course',
                        'user',
                        'teacher',
                        'holiday',
                        'pupil',
                        'additional',
                        'degree',
//                        'big-long-controller-name',
//                        'BigLongControllerName',
//                        'bigLongControllerName',
//                        'big_long_controller_name',
                    ]
                ],
                '/' => 'site/index',
                '/auth' => 'site/auth',
            ],
        ],

Контроллер не имеет ничего особенного. Он прекрасно работает, когда я переименую его в AdditionalController.php

class BigLongControllerNameController extends RESTController
{
    public $modelClass = 'app\models\AdditionalFieldOption';

    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['access']['except'] = ['view', 'index', 'options'];
        $behaviors['access']['rules'] =
        [
            [
                'actions' => ['view', 'index', 'options', 'update', 'delete', 'create'],
                'allow' => true,
                'roles' => ['admin'],
            ],
        ];
        return $behaviors;
    }

Должен ли я опубликовать весь конфиг?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Хорошо, поэтому ответ таков:

Для класса контроллера с именем BigLongNameController, Yii2 rest \ UrlRule сгенерирует URL / big-long-controller-name s / и NOT / big-long-controller-name / потому что у него есть функция, называемая множественным числом, которая включена по умолчанию.Я как-то забыл об этом.Еще раз извините за глупый вопрос.

В случае, если кто-то приходит из Google, правильный конфиг выглядит примерно так:

            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' =>
                    [
                        'group',
                        'course',
                        'user',
                        'teacher',
                        'holiday',
                        'pupil',
                        'additional',
                        'degree',
                        'big-long-controller-name',
                    ]

Класс контроллера и его файл должны быть названы с помощью camelcase,а не дефисы, например, BigLongControllerNameController.php, содержащий:

class BigLongControllerNameController extends ActiveController {
 // your code
} 

URL-адрес будет / big-long-controller-names

1 голос
/ 11 июля 2019

По умолчанию идентификаторы контроллера должны содержать только эти символы: английские буквы в нижнем регистре, цифры, подчеркивания, дефисы и косые черты. Например, article и post-comment являются действительными идентификаторами контроллера, а article ?, PostComment, admin \ post - нет.

См. ссылку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...