2014-10-05 15 views
10

Nếu tôi cần thêm liên kết vào phần frontend từ phần phụ trợ trong menu (hoặc từ backend đến admin), làm thế nào tôi có thể làm điều này mà không cần hardcode? này:Yii2 Liên kết giữa Frontend và Backend (mẫu nâng cao)

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

trở đường đi từ cha mẹ dir

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

Trả lời

19

Trong cấu hình ứng dụng phụ trợ của bạn, bạn nên bổ sung thêm 'UrlManager' thành phần với tên và cấu hình khác nhau tương đương với một trong những sử dụng tại ứng dụng kết thúc trước:

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

    ], 
]; 

sau đó, bạn nên gọi sau đây để soạn URL front-end:

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

Vì vậy, nó phải trông giống như thế này? $ menuItems = [ ['label' => 'Home', 'url' => ['/ site/index']], ['label' => 'Frontend', 'url' => [Yii :: $ app-> urlManagerFrontEnd-> createUrl ('/')]], ]; – WebArtisan

+0

có nhưng Yii này :: $ app-> urlManagerFrontEnd-> createUrl ('/') được trả lại trong đường dẫn forntend nhưng bạn cần đặt trong tạo url ví dụ Yii :: $ app-> urlManagerFrontEnd-> createUrl ('controllerName/ActionName ') –

+0

Đáng buồn thay, nhưng nó chỉ hoạt động nếu im đặt này trong liên kết Frontend nhưng không hoạt động trong navbar navBar :: bắt đầu ([... tôi bị này nếu tôi sử dụng nó trong navbar: không thể giải quyết theo yêu cầu "sitename/frontend/web" Có lẽ Navbar thêm baseurl cũ để yêu cầu – WebArtisan

3

sai lầm-i của tôi sai gửi giá trị liên kết

sai:

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

Thats trình:

$menuItems[] = ['label'=>'frontend', 'url'=>\Yii::$app->urlManagerFrontEnd->baseUrl]; 
Các vấn đề liên quan