Yii2使用别名从后端高级访问前端

时间:2014-07-31 15:57:07

标签: yii2

我尝试使用别名

从后端菜单访问前端/网页

yii:yii2 advanced webserver : XAMPP IDE:net beans

我修改过的代码:

C:\ XAMPP \ htdocs中\先进\共同\配置\ aliases.php

Yii::setAlias('fronthome', dirname(dirname(__DIR__)) . '/frontend/web/');

C:\ XAMPP \ htdocs中\先进\后端\视图\布局\ main.php

if (Yii::$app->user->isGuest) {
    $menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];
    $menuItems[] = ['label' => 'fronthome', 'url' => Yii::getAlias('@fronthome')];

但访问" fronthome"菜单通过后端菜单;浏览器正在返回网址:     http://localhost/advanced/backend/web/C:/xampp/htdocs/advanced/frontend/web

我想要浏览器给出的内容:     http://localhost/advanced/frontend/web/

可以请一些人点亮......我搜索过但没有优雅的解决方案,我可以通过别名找到。

由于

我通过进行以下更改来实现它

C:\ XAMPP \ htdocs中\先进\共同\配置\ aliases.php

Yii::setAlias('fronthome', dirname(dirname(__DIR__)) . '/frontend/web/');

Yii::setAlias('fronthome', '../../frontend/web/');

2 个答案:

答案 0 :(得分:0)

尝试使用params.php

在common / config文件夹

上的params.php上添加一个键
 'frontendUrl' => 'http://frontendUrl/',

然后您可以通过以下方式在视图的任何位置访问它:

<?= Yii::$app->params['frontendUrl'] ?>

希望这会有所帮助:)

答案 1 :(得分:0)

由于评论中的链接已过时,因此是Yii2文档的摘录:

  

创建从后端到前端的链接   通常需要创建从后端应用程序到前端应用程序的链接。由于前端应用程序可能包含自己的URL管理器规则,因此需要通过不同的方式为后端应用程序复制该规则:

return [
    'components' => [
        'urlManager' => [
            // here is your normal backend url manager config
        ],
        'urlManagerFrontend' => [
            // here is your frontend URL manager config
        ],

    ],
];

 //After it is done, you can get an URL pointing to frontend like the following:

echo Yii::$app->urlManagerFrontend->createUrl(...);

相关文档副本的当前链接:https://yii2-framework.readthedocs.io/en/stable/guide/tutorial-advanced-app/

我实现这个的方法是在我的后端添加一个开关/ config / bootstrap.php

    switch (YII_ENV) {
    case 'dev':
        $frontend = 'https://my-domain.lan/';
        break;
    case 'test':
        $frontend = 'https://my-domain.test/';
        break;
    case 'prod':
        $frontend = 'https://my-domain.com/';
        break;      
}

然后在我的后端/ config / main.php中添加了以下内容

        'urlManagerFrontend' => [
        'class' => UrlManager::className(),
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'baseUrl' => $frontend,
        'rules' => [
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ]
    ],

然后我想使用前端链接:

echo Html::a('link',Yii::$app->urlManagerFrontend->createUrl('controller/view'))