kimono
@kimono
Web developer

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

Имеется advanced приложение, backend расположен на поддомене admin.site.dev, сайт находится на site.dev.
Необходимо перенаправить пользователя из админки на главный сайт.
Для этого заведен дополнительный UrlManager таким образом:
// в backend components
'reverseUrlManager' => [
	'class'           => yii\web\UrlManager::className(),
	'baseUrl'         => 'http://site.dev',
	'enablePrettyUrl' => false,
	'showScriptName'  => true,
],
// в frontend components
'reverseUrlManager' => [
	'class'           => yii\web\UrlManager::className(),
	'baseUrl'         => 'http://admin.site.dev',
	'enablePrettyUrl' => false,
	'showScriptName'  => true,
],

Для получения ссылки на frontend из backend делаю так:
// backend
/* @var $urlManager UrlManager */
$urlManager = \Yii::$app->get('reverseUrlManager');
var_dump($urlManager->createAbsoluteUrl(['/hello']));

При этом ожидаю получить site.dev/hello, а получаю admin.site.dev/hello.
Хреново! А если так:
/* @var $urlManager UrlManager */
$urlManager = \Yii::$app->get('reverseUrlManager');
$urlManager->showScriptName = false;
$urlManager->enablePrettyUrl = true;
var_dump($urlManager->createAbsoluteUrl(['/site']));

http://site.dev/hello Работает!
Что за косяк? Почему домен задается верно только при showScriptName = false и enablePrettyUrl = true?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
kimono
@kimono Автор вопроса
Web developer
Вобщем кому будет интересно как решить такое:
'reverseUrlManager' => [
  'class'           => yii\web\UrlManager::className(),
  'baseUrl'         => 'http://site.dev',
  'scriptUrl'         => 'http://site.dev', // нужно добавить это
  'enablePrettyUrl' => false,
  'showScriptName'  => true,
],
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
а так:
$link = Yii::$app->reverseUrlManager->createUrl(['site/index']);
var_dump($link);
Ответ написан
Ваш ответ на вопрос

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

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