Yii2: прикрепление нескольких событий на представлении

Привет,
Я хочу попробовать создать динамическую боковую панель и контент, я имею триггерное событие в поле зрения,

вот мой код:

бэкенд / просмотр / макеты / _sidebar.php

use common\component\Hook;
use yii\base\Event;

Event::trigger(Hook::className(), Hook::SIDEBAR_MENU);

бэкенд / просмотр / внутр / index.php

use common\component\Hook;
use yii\base\Event;

Event::trigger(Hook::className(), Hook::PlUGIN_CONTENT);

общий / компонент / Hook.php

namespace common\component;

use yii\base\Component;

class Hook extends Component{

const SIDEBAR_MENU = '';
const PlUGIN_CONTENT = '';

}

бэкенд \ Plugins \ Plugin \ index.php

namespace backend\plugins\Plugin;

use Yii;
use common\component\Hook;
use yii\base\Event;
use yii\helpers\Html;

class Index extends Event{
function sidebar() {
echo '<li>' . Html::a('Menu Plugin 1', ['/ext?n=Plugin']) . '</li>';
}

function renderContent(){
echo 'this is content';
}
}

Event::on(Hook::className(), Hook::SIDEBAR_MENU, [new Index, 'sidebar']);
Event::on(Hook::className(), Hook::PlUGIN_CONTENT, [new Index, 'renderContent']);

бэкенд \ Plugins \ Plugin2 \ index.php

namespace backend\plugins\Plugin2;

use Yii;
use common\component\Hook;
use yii\base\Event;
use yii\helpers\Html;

Event::on(Hook::className(), Hook::SIDEBAR_MENU, function () {
echo '<li>' . Html::a('Menu Plugin 2', ['/ext?n=Plugin2']) . '</li>';
});

а вот мой контроллер бэкэнда / контроллер / ExtController.php

namespace backend\controllers;

use Yii;
use yii\web\Controller;

class ExtController extends Controller
{
public function actionIndex(){
return $this->render('index');
}

}

вопрос:

  1. почему они появляются в _sidebar.php несколько раз? Я просто запускаю SIDEBAR MENU в sidebar.php, почему они запускают SIDEBAR_MENU и PLUGIN_CONTENT в одно и то же время?
  2. У меня тоже есть событие триггера в backend / view / ext / index.php, но PLUGIN_CONTENT не сработал, поэтому контент не появляется

3

Решение

в hook.php они оба имеют одинаковое значение, то есть пустую строку «», они должны иметь значение

namespace common\component;

use yii\base\Component;

class Hook extends Component{

const SIDEBAR_MENU = 'sidebarMenu';
const PlUGIN_CONTENT = 'pluginContent';

}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]