2017-12-15 10 views
0

Google에 AMP (Accelerated Mobile Pages)를 사용하고 싶습니다. example.com/my-article과 같은 기사 URL도 example.com/amp/my-article이지만 다른 레이아웃을 사용할 수 있어야합니다.Yii2 : URL 경로에 따라 다른 레이아웃을 표시하는 방법은 무엇입니까?

질문 : 다른 레이아웃을 표시하고 기사 컨트롤러에 대한 URL 경로 규칙을 만들기 위해 Yii2 코드를 어떻게 구성해야합니까? 몇 가지 팁은 내가 만든 :

public function beforeAction($action) 
{ 
    if (...) // ?? 
     $this->layout = 'amp'; 
    else 
     $this->layout = 'main'; 

    return parent::beforeAction($action); 
} 

public function actionView($article_slug) 
{ 
    $model = $this->findModel($article_slug); 

    if ($this->layout == 'amp') 
     $path = 'amp/view'; 
    else 
     $path = 'html/view'; 

    return $this->render($path, [ 
     'model' => $model, 
    ]); 
} 

config.php 무엇을 작성?

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'rules' => [ 

     // ?? 
     'amp/<article_slug:[\w\-]+>' => 'article/view', 

     '<article_slug:[\w\-]+>' => 'article/view', 
    ], 
], 

답변

0

당신은 행동

public function beforeAction($action) 
{ 
    if (\Yii::$app->request->getQueryParam('amp')) { 
     $this->layout = 'amp'; 
    else 
     $this->layout = 'main'; 

    return parent::beforeAction($action); 
} 

전에 이런 일을에서 할 그리고이

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'rules' => [ 
     '<amp>/<article_slug:[\w\-]+>' => 'article/view', 

     '<article_slug:[\w\-]+>' => 'article/view', 
    ], 
], 
같은 URL 관리자를 구성 할 수 있습니다