首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii2使用别名从后端高级访问前端

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

Stack Overflow用户
提问于 2014-07-31 23:57:07
回答 2查看 3.2K关注 0票数 2

我尝试使用别名从后端菜单访问前端/web

yii:yii2 advanced webserver : XAMPP IDE:net beans

我修改的代码:

C:\xampp\htdocs\advanced\common\config\aliases.php

代码语言:javascript
复制
Yii::setAlias('fronthome', dirname(dirname(__DIR__)) . '/frontend/web/');

C:\xampp\htdocs\advanced\backend\views\layouts\main.php

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

但是当通过后端菜单访问"fronthome“菜单时,浏览器返回的是url:http://localhost/advanced/backend/web/C:/xampp/htdocs/advanced/frontend/web

我希望浏览器提供的功能:http://localhost/advanced/frontend/web/

能不能请谁放点光..。我搜索了一下,但是没有一个优雅的解决方案可以通过别名找到。

谢谢

我做了下面的修改,让它正常工作。

C:\xampp\htdocs\advanced\common\config\aliases.php

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-02-08 20:19:20

由于评论中的链接已过时,下面是Yii2文档中的一段代码:

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

代码语言:javascript
复制
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中添加一个开关

代码语言:javascript
复制
    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中添加了以下内容

代码语言:javascript
复制
        '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>',
        ]
    ],

然后在我想使用前端链接的地方:

代码语言:javascript
复制
echo Html::a('link',Yii::$app->urlManagerFrontend->createUrl('controller/view'))
票数 1
EN

Stack Overflow用户

发布于 2015-01-16 18:15:35

尝试使用params.php

在您的common/ params.php文件夹中添加一个密钥

代码语言:javascript
复制
 'frontendUrl' => 'http://frontendUrl/',

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

代码语言:javascript
复制
<?= Yii::$app->params['frontendUrl'] ?>

希望这能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25063644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档