• Как получить yii\web\Application Object(Yii:$app) frontend из backend в yii2?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Yii:$app->controller получает текущий контроллер. Не важно где вы находитесь. Скорее всего вы имели ввиду роутинг между frontend и backend.

    Что бы во frontend иметь возможность формировать ссылки на контроллеры backend необходимо вo frontend добавить новый urlManager

    В \progect\frontend\config\main.php добавьте следующий компонент
    'urlManagerBackend' => [
                'class' => 'yii\web\urlManager',
                'baseUrl' => 'http://yoursitedomain.ru',
                'enablePrettyUrl' => true,
                'showScriptName' => false,
                'rules' => require(__DIR__ . '../backend/routes.php'),
            ],

    После это вы можете легко создавать ссылки на backend из frontend используя второй менеджер
    Yii::$app->urlManagerBackend->createUrl(['controller/action', 'parametr1' => 'value1']),


    Обратите внимание что правила роутинга вынесены в отдельный файл т.к. эти правила будут использоваться как в urlManager backend, так и в urlManagerBackend во frontend. Это избавляет нас от дублирования.

    Аналогичным образом вы сможете настроить формирование ссылок на frontend из backend

    Если вам нужно именно получить все роуты в системе, то можно посмотреть как это реализовано популярном в расширении RBAC
    Ответ написан
    1 комментарий