Динамическое добавление правил маршрутизации Yii2

Рейтинг: 1Ответов: 0Опубликовано: 11.01.2023

Объясните новичку-новичку пожалуйста где я не правильно читаю докуцментацию? Имеется:

  • php 7.4
  • свежепоставленный yii advanced.

в файле frontend\config\main.php пишу:

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'home' => '',
                'about' => 'site/about',
                'contact' => 'site/contact',
                'signup' => 'site/signup',
                'login' => 'site/login',
                'logout' => 'site/logout',
                'gii' => 'gii',
                'defaultRoute' => '']
        ]

Соответственно поправляю ссылки в файле frontend\views\layouts\main.php

Все работает! в браузере ссылки выглядят как /contact, /signup, /about, /login Все работает, ссылки ведут куда положено!

Читаю документацию по маршрутизации и динамичесвому добавлению правил, пытаюсь прикрутить.

В файле frontend\config\main.php Ключ rules оставляю пустым массивом.

В файле frontend\config\bootstrap.php прописываю:

use yii\base\BootstrapInterface;

class Bootstrap implements BootstrapInterface
{
    function bootstrap($app)
    {
        $app->getUrlManager()->addRules(
            [
                'home' => '',
                'about' => 'site/about',
                'contact' => 'site/contact',
                'signup' => 'site/signup',
                'login' => 'site/login',
                'logout' => 'site/logout',
                'gii' => 'gii',
                'defaultRoute' => ''
            ]
        );
    }
}

получаю: Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Bootstrap has a deprecated constructor in ...

Вроде понятно, делаю function __construct($app) вместо function bootstrap($app)

получаю: Fatal error: Class Bootstrap contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (yii\base\BootstrapInterface::bootstrap) in...

Вроде тоже понятно, делаю abstract class Bootstrap... вместо class Bootstrap...

Ошибок не получаю, - уже хорошо. Смотрю ссылки:

  • about и contact (визуально) ведут на /site/about и site/contact и работают
  • gii (визуально) ведет на /gii и работает
  • signup и login (визуально) ведут на /signup и /login и уходят на 404.

Покажите пальцем, пожалуйста, где я чего не дочитал?

Ответы

Ответов пока нет.