Допустим frontend/config/main.php содержит следующие настройки urlManager:
- //...
- 'urlManager' => [
- 'enablePrettyUrl' => true,
- 'showScriptName' => false,
- 'rules' => [
- ['class' => 'frontend\components\MyClassUrlRule'],
- '' => 'site/index',
- '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
- ],
- ],
- //...
В свою очередь backend/config/main.php содержит следующие настройки urlManager:
- //...
- 'components' => [
- //...
- 'urlManager' => [
- 'enablePrettyUrl' => true,
- 'showScriptName' => false,
- 'rules' => [
- '/admin' => 'site/index',
- '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
- ],
- ],
- ],
- //...
В админке (backend) нам необходимо сделать ссылку на страницу сайта (frontend) при этом обработать ее нашим классом (MyClassUrlRule) в котором url будет преобразован к необходимому виду.
Первое, что необходимо сделать это добавить urlManager сайта (frontend), открываем backend/config/main.php и добавляем под urlManager следующий код:
- //...
- 'components' => [
- //...
- 'urlManager' => [
- //...
- ],
- 'urlManagerFrontend' => [
- 'class' => 'yii\web\UrlManager',
- 'baseUrl' => '',
- 'enablePrettyUrl' => true,
- 'enableStrictParsing' => true,
- 'showScriptName' => false,
- 'rules' => [
- ['class' => 'frontend\components\MyClassUrlRule'],
- '' => 'site/index',
- '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
- ],
- ],
- ],
- //...
Теперь в админке (backend) в нужном месте вызываем метод createUrl следующим образом:
- echo Yii::$app->urlManagerFrontend->createUrl(['post/detail', 'postId'=>$model->id]);
И получаем необходимую ссылку.
По аналогии можно сделать и для ссылки с сайта (frontend) на админку (backend).
Источник:
Перейти