des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Как создать ссылку на backend из frontend в Yii2?

Как в меню frontend добавить ссылку на backend?

UPD 1:
\yii2rbac\frontend\config\main.php
'components' => [
        'urlManager' => [
            //  'class' => 'backend\components\UrlManager',
            'enablePrettyUrl' => true,
        // 'rules' => require(__DIR__ . '/routes.php'),
        ],
        'urlManagerFrontend' => [
            'class' => 'yii\web\urlManager',
            'baseUrl' => 'http://localhost/yii2rbac',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        //'rules' => require(__DIR__ . '../frontend/routes.php'),
        ],

\yii2rbac\backend\config\main.php
'components' => [
        'urlManager' => [
            // 'class' => 'backend\components\UrlManager',
            'enablePrettyUrl' => true,
        // 'rules' => require(__DIR__ . '/routes.php'),
        ],

\yii2rbac\common\config\main.php
'components' => [
        'urlManager' => [
            'class' => 'yii\web\urlManager',
            'enablePrettyUrl' => true,
        ],

тогда в \yii2rbac\frontend\views\layouts\main.php
$menuItems = [
                ['label' => 'back', 'url' => Yii::$app->urlManagerFrontend->createUrl('backend/web/index.php'),],

и получаю ссылку localhost/yii2rbac/backend/web/index.php
Мне кажется что, что бы получить localhost/yii2rbac/frontend/web/index.php из backend придется зеркально те же действия делать

UPD 2:
Чувствую что я указываю абсолютный url.
Вроде же через apache это можно как то поправить. Ведь так?
Set document roots of your Web server:

For Apache:

<VirtualHost *:80>
    ServerName www.yii2-start.domain # You need to change it to your own domain  
    ServerAlias yii2-start.domain # You need to change it to your own domain  
    DocumentRoot /my/path/to/yii2-start # You need to change it to your own path  
    <Directory /my/path/to/yii2-start> # You need to change it to your own path  
        AllowOverride All  
    </Directory>  
</VirtualHost>

    Use the URL http://yii2-start.domain to access application frontend.
    Use the URL http://yii2-start.domain/backend/ to access application backend.
  • Вопрос задан
  • 5450 просмотров
Решения вопроса 1
serieznyi
@serieznyi
Backend Developer
Что бы во frontend иметь возможность формировать ссылки на контроллеры backend необходимо в frontend добавить новый UrlManager.

В \yii2rbac\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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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