@balex777

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

Контролер находится в backend.
Yii:$app выдает данные о приложении только бекэнда, а надо и фронтенда тоже чтобы получить контролеры которые там есть.
Как получить данные приложения frontend из бэкэнда?
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
maksim92
@maksim92 Куратор тега 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
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
usdglander
@usdglander
Yippee ki-yay
Вы явно что то делаете не так... В принципе ситуация, когда из одного контроллера нужно дёргать другой - это нарушение архитектуры. А данные получаются через модели. Если модель используется только во frontend или backend, то она должна лежать в соответствующем каталоге. Если это общая модель, то используйте common.
Ответ написан
@balex777 Автор вопроса
Дополню вопрос, мне это нужно для RBAC чтобы все контролеры получить на всех приложениях.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы