Как правильно настроить url rules YII2?

У меня появилась небольшая проблема, обыскал все и вроде понял, что нужно делать динамические url, но в целом суть не ясна как и что.

Я хотел сделать ЧПУ, такого типа: https://site/Admin - для профиля, https://site/SaqhFe - для книги (SaqhFe - slug), https://site/SaqhFe/2 - для глав (SaqhFe - slug, 2 - номер главы).
Код urlManger:
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            //'enableStrictParsing' => true,
            'rules' => [
                '/' => 'site/index',
                '<action:(login|signup|logout|news|contact)>' => 'site/<action>',

                'authorial' => 'authorial/index',
                'a/<action>' => 'authorial/<action>',

                'translation' => 'translation/index',
                't/<action>' => 'translation/<action>',

                [
                    'class' => 'yii\web\GroupUrlRule',
                    'routePrefix' => 'books',
                    'rules' => [
                        '<slug>' => 'view',
                        'create' => 'create',
                        '<slug>/settings' => 'update',
                    ],
                ],

                [
                    'class' => 'yii\web\GroupUrlRule',
                    'routePrefix' => 'profile',
                    'rules' => [
                        '<username>' => 'view',
                        '/profile/edit' => 'update',
                    ],
                ],

                'w/<action>' => 'wishlist/<action>',

                'c/settings' => 'chapter/settings',
                '<slug>/<number>' => 'chapter/view',
                '<slug>/<number>/editor' => 'chapter/update',
            ],
        ],


Но встает проблема, при заходе в книгу, кидает на страницу аккаунта (ну и конечно выдает ошибку, что нет такого аккаунта). То же самое при заходе на страницу типа https://site/profile/edit, кидает на страницу глав, тоже с ошибкой.
Пожалуйста подскажите как правильно решить данную проблему.
  • Вопрос задан
  • 350 просмотров
Пригласить эксперта
Ответы на вопрос 1
VerbAlexVlad
@VerbAlexVlad
Программист-любитель
Проще написать в таком виде:
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    //'enableStrictParsing' => true,
    'rules' => [
        '/' => 'site/index',
        '<action:(login|signup|logout|news|contact)>' => 'site/<action>',

        'authorial' => 'authorial/index',
        'a/<action>' => 'authorial/<action>',

        'translation' => 'translation/index',
        't/<action>' => 'translation/<action>',

        'books/<slug:\d+>' => 'books/view',
        'books/create' => 'books/create', // Эту строку вообще не вижу смысла писать
        'books/<slug:\d+>/settings' => 'books/update',

        'profile/<username:\w+>' => 'profile/view',
        'profile/edit' => 'update',

        'w/<action>' => 'wishlist/<action>',

        'c/settings' => 'chapter/settings',
        '<slug:\d+>/<number:\d+>' => 'chapter/view',
        '<slug:\d+>/<number:\d+>/editor' => 'chapter/update',
    ],
],
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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