2014-10-05 4 views
10

메뉴의 백엔드 부분 (또는 백엔드에서 관리자까지)의 프론트 엔드에 대한 링크를 추가해야하는 경우 하드 코드없이 어떻게 할 수 있습니까? 이 : 추가 다른 이름과 구성 'UrlManager'구성 요소는 프런트 엔드 응용 프로그램에서 사용되는 것과 동일 추가해야 백엔드 애플리케이션 설정에서Yii2 프론트 엔드와 백엔드 사이의 링크 (고급 템플릿)

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

답변

19

디렉토리 부모

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

반환 경로 :

: 다음

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

    ], 
]; 

당신은 프런트 엔드 URL을 구성하려면 다음을 호출해야합니다 16,

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

, 그것은 반드시 다음과 같은 형태? $ menuItems = [[ 'label'=> '집', 'url'=> [ '/ 사이트/색인']], [ 'label'=> 'Frontend', 'url'=> [Yii :: $ app-> urlManagerFrontEnd-> createUrl ('/')]], ]; – WebArtisan

+0

네,하지만이 Yii :: $ app-> urlManagerFrontEnd-> createUrl ('/') forntend 경로에서 반환되지만 예를 들어 Yii :: $ app-> urlManagerFrontEnd-> createUrl ('controllerName/ActionName ') –

+0

는 슬프게도하지만 메신저 네비게이션 바 네비게이션 바에있는 링크에 Frontend 하지만 작품이를 넣어 경우에만 :: 시작 작동 ([... 나는 내가 네비게이션 바에서 이것을 사용있어 경우 : 요청을 할 수 없습니다 해결하기 위해 "sitename/frontend/web". 아마도 Navbar는 요청할 이전 baseurl을 추가합니다. – WebArtisan

3

내 실수 - 내가 잘못

잘못된 링크 값을 보내

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

그게 작품 : 그래서

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