Как правильно получить модуль?

Пытаюсь решить вопрос со своим расширением вот ссылка суть в чем мне надо выводить сформированное меню как есть пришел к выводу что это придется делать через Menuviews::widgets([]);
соответственно в директории своего расширения создал класс Menuviews который от наследовал от Widget
вот схема расширения
assets 	//директрория
	controllers 	//директория
	messages/ru-RU/sirgalas/menu 	//директория
	migrations 	//директория
	models 	//директория
	views 	//директория
	MenuAsset.php 	//асеты
	MenuModule.php 	//сам модуль
	MenuView.php      //то с чем пытаюсь работать

для чего это делается что бы вот так
use sirgalas\menu\MenuView;
<?= MenuView::widget(['name'=>'HederMenuLeft']); ?>

получить сформированное меню
теперь стало проблемой получить сам модуль расширения в MenuView модуль называется MenuModule.
делаю это так
use sirgalas\menu\models\Menu;
use yii\base\Widget;
use sirgalas\menu\MenuModule;
class MenuView extends Widget
{
    public $name;
    public function init(){
        parent::init();
    }
    public function run(){
        $model=Menu::findOne($this->name);
        $module= MenuModule::getInstance();
        return var_dump($module);
    }

получаю null
Возникло два вопроса 1 возникает ощущение что делаю говно код это так ? 2 почему не могу получить MenuModule в классе MenuView?
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
Возникло два вопроса 1 возникает ощущение что делаю говно код это так ?

Для начал что делает Ваше расширение формирует меню? В таком случае случае мне не понятно зачем в нем есть модель и миграции. Модель по хорошему должна инжектится в Ваш модуль, а не жить в нем.... Дальше MenuView - это что за виджет, за что он отвечает? за отрисовку меню? Если да тогда вообще не вижу в нем смысла ведь есть стандартные инструменты

2 почему не могу получить MenuModule в классе MenuView?

Потому что getInstance() возвращает инстанцированный объект класса. А если текущий запрос относиться не к указанному модулю - модуль не инстанцируется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы