【问题标题】:can't configure urls from backend to frontend Yii2无法配置从后端到前端 Yii2 的 url
【发布时间】:2016-04-05 16:22:12
【问题描述】:

Web 前端 - localhost(LAMP 中的目录 apache2/htdocs),Web 后端 - localhost:8080/backend (apache2/htdocs/backend)。 Yii 高级应用程序与 htdocs 位于同一目录中 - mafia-yii (apache2/mafia-yii)。后端/配置中的文件 main.php:

'components' => [
    ....
    'urlManager' => [
        // here is your normal backend url manager config
        'class' => 'yii\web\UrlManager',
        'baseUrl' => 'http://localhost/backend',
    ],
    'urlManagerFrontend' => [
        'class' => 'yii\web\UrlManager',
        'hostInfo' => 'http://localhost',
        'baseUrl' => 'http://localhost',
    ],

],

文件 ~/lampstack-7.0.4-0/apache2/mafia-yii/backend/views/layouts/main.php :

....
$menuItems[] = ['label' => 'Backend', 'url' => ['/site/index']];
$menuItems[] = ['label' => 'Fronend', 'url' => [Yii::$app->urlManagerFrontend->createUrl('/site/index')]];
....

结果: http://localhost:8080/backend/index.php?r=backend%2Findex.php%3Fr%3Dsite%252Findex

未找到 (#404)

【问题讨论】:

    标签: yii2


    【解决方案1】:

    您是否尝试过:

    'components' => [
        ....
        'urlManager' => [
            // here is your normal backend url manager config
            'class' => 'yii\web\UrlManager',
            'baseUrl' => '/backend',
        ],
        'urlManagerFrontend' => [
            'class' => 'yii\web\UrlManager',
            'hostInfo' => 'http://localhost',
            'baseUrl' => '',
        ],
    
    ],
    

    【讨论】:

      【解决方案2】:

      尝试使用以下代码:

      use yii\helpers\Url;
      
      $menuItems[] = ['label' => 'Fronend', 'url' => Url::to(Yii::getAlias('@web') . '/site/index', true)];
      

      【讨论】:

      • 结果:localhost:8080/backend/site/index Not Found (#404) 它返回为@web - "/backend"
      • 那么请在 'urlManagerFrontend' => [ 'class' => 'yii\web\UrlManager 之后尝试使用 Yii::$app->urlManagerFrontend->createUrl('/site/index') ', 'hostInfo' => 'localhost', 'baseUrl' => '', ], 配置而不是 Url::to(
      【解决方案3】:

      我解决了这个问题。 因为:

      $var[] = Yii::getAlias('@webroot');
      $var[] = Yii::getAlias('@web');
      \yii\helpers\VarDumper::dump($var);
      

      返回: [ 0 => '/home/kira/lampstack-7.0.4-0/apache2/htdocs/backend' 1 => '/backend' ]

      解决办法是: $menuItems[] = ['label' => '前端', 'url' => '@web/../'];

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-09
        • 1970-01-01
        • 2018-09-13
        • 2021-12-29
        相关资源
        最近更新 更多