我试图使用别名从后端菜单访问前端/web
yii:yii2 advanced
webserver : XAMPP
IDE:net beans
我修改的代码:
C: xampp 根 常见 config 先进aliases.php
Yii::setAlias('fronthome', dirname(dirname(__DIR__)) . '/frontend/web/');
C: xampp 根先进端 views 布局 main.php
if (Yii::$app->user->isGuest) {
$menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];
$menuItems[] = ['label' => 'fronthome', 'url' => Yii::getAlias('@fronthome')];
但是当通过后端菜单访问"前台"菜单时;浏览器正在返回url:http://localhost/advanced/backend/web/C:/xampp/htdocs/advanced/frontend/web
我想要的浏览器给:http://localhost/advanced/frontend/web/
有人能放点灯吗?我搜索了一下,但没有通过别名找到一个优雅的解决方案。
感谢我让它工作通过做下面的改变
C: xampp 根 常见 config 先进aliases.php
Yii::setAlias('fronthome', dirname(dirname(__DIR__)) . '/frontend/web/');
Yii::setAlias('fronthome', '../../frontend/web/');
由于注释中的链接已经过时,这里是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'))
尝试使用params.php
在common/config文件夹下的params.php中添加一个键
'frontendUrl' => 'http://frontendUrl/',
然后你可以在视图的任何地方访问它:
<?= Yii::$app->params['frontendUrl'] ?>
希望这对你有帮助