2014-10-05 125 views
10

如果我需要在菜單(或從後端到管理員)中從後端部分添加前端鏈接到前端,我如何在沒有硬編碼的情況下做到這一點? 此:Yii2前端和後端之間的鏈接(高級模板)

\Yii::$app->request->BaseUrl 

回報父母DIR

/sitename/backend/web 
/sitename/frontend/web 

回答

19

在你的後臺應用程序配置路徑,你應該添加額外的「UrlManager」有不同的名稱和配置組件等於在前端應用程序使用的一種:

return [ 
    'components' => [ 
     'urlManager' => [ 
      // here is your backend URL rules 
     ], 
     'urlManagerFrontEnd' => [ 
      'class' => 'yii\web\urlManager', 
      'baseUrl' => '/a/frontend/web', 
      'enablePrettyUrl' => true, 
      'showScriptName' => false, 
     ], 

    ], 
]; 

那麼你應該調用以下組成前端網址:

Yii::$app->urlManagerFrontEnd->createUrl(); 
+0

,它必須看起來是這樣的? $ menuItems = [ ['label'=>'Home','url'=> ['/ site/index']], ['label'=>'Frontend','url'=> [Yii :: $ app-> urlManagerFrontEnd-> createUrl('/')]], ]; – WebArtisan 2014-10-05 20:08:59

+0

yes但是這個Yii :: $ app-> urlManagerFrontEnd-> createUrl('/')在forntend路徑中返回,但您需要在create url中設置例如Yii :: $ app-> urlManagerFrontEnd-> createUrl('controllerName/ActionName 「) – 2014-10-05 20:12:57

+0

可悲的是,但它只能如果即時通訊把這個鏈接 Frontend 但不是作品導航欄的NavBar ::開始([... 我得到了這一點,如果我用它在導航欄: 無法解析請求「sitename/frontend/web」 也許Navbar添加舊的基地址請求 – WebArtisan 2014-10-05 21:07:57

3

是我的錯,我錯了發送鏈接的價值

錯誤:

$menuItems[] = ['label'=>'frontend', 'url'=>[\Yii::$app->urlManagerFrontEnd->baseUrl]]; 

那作品:

$menuItems[] = ['label'=>'frontend', 'url'=>\Yii::$app->urlManagerFrontEnd->baseUrl];