2015-05-28 2 views

ответ

5

вопрос Определенно слишком широк, но вот решение, которое я использовал:

<?php 

namespace backend\modules\tests\components; 

use yii\helpers\ArrayHelper; 
use yii\web\Controller as BaseController; 
use yii\web\View; 

class Controller extends BaseController 
{ 
    /** 
    * @inheritdoc 
    */ 
    public function beforeAction($action) 
    { 
     if (parent::beforeAction($action)) { 
      Yii::$app->view->on(View::EVENT_BEGIN_BODY, function() { 
       $this->fillBreadcrumbs(); 
      }); 

      return true; 
     } else { 
      return false; 
     } 
    } 

    /** 
    * Fill common breadcrumbs 
    */ 
    protected function fillBreadcrumbs() 
    { 
     $breadcrumbs = []; 

     // Add needed elements to $breadcrumbs below 

     $label = 'Tests'; 
     $breadcrumbs[] = $this->route == '/tests/default/index' ? $label : [ 
      'label' => $label, 
      'url' => ['/tests/default/index'], 
     ]; 

     // ... 

     $this->mergeBreadCrumbs($breadcrumbs); 
    } 

    /** 
    * Prepend common breadcrumbs to existing ones 
    * @param array $breadcrumbs 
    */ 
    protected function mergeBreadcrumbs($breadcrumbs) 
    { 
     $existingBreadcrumbs = ArrayHelper::getValue($this->view->params, 'breadcrumbs', []); 
     $this->view->params['breadcrumbs'] = array_merge($breadcrumbs, $existingBreadcrumbs); 
    } 
} 

Как вы можете видеть, он основан на просмотре событий и пользовательского контроллера (простирающейся от yii\web\Controller).

Все, что вам нужно, это продлить необходимые контроллеры от пользовательского.

+0

Вопрос не является широким - это довольно просто. Я буду перефразировать: «Как вы устанавливаете панировочные сундуки из файла модуля, так что вам не нужно ставить повторяющиеся куски внутри модуля (модели/контроллеры/просмотр)?» Информация, предоставленная вами в полезной форме, но не затрагивает этот вопрос. – nssmart

Смежные вопросы