генерация URL до модуля

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

генерация URL до модуля

Сообщение kwasti »

Добрый день,

Не могу сообразить как генерировать URL для модуля.
пример:
модуль admin
подключен в конфиге приложения как

Код: Выделить всё

'modules' => [
  'admin'=>['class'=>'common\modules\admin\'],
  ]
для создания url для пункта меню из приложения можно использовать стандартную конструкцию

Код: Выделить всё

['label'=>'Admin','url'=>['/admin/']]
проблемы нет, но в самом модуле есть свой шаблон который формирует свое меню для обращения к модулям, котрые подключены внутри модуля 'admin'.
я могу так же использовать аналогичную конструкцию

Код: Выделить всё

['label'=>$modulelabel,'url'=>['/admin/'.$key]]
и т.д. Но пути будут не верны, если по каким-то причинам в основном приложении модуль 'admin' будет подключен под другим ключом, например 'adm'

Код: Выделить всё

'modules' => [
  'adm'=>['class'=>'common\modules\admin\'],
  
искать все ссылки в модуле и исправлять не очень то приятная и дружелюбная процедура.
как в этом случае победить это?

И хотя логически я не собираюсь размещать модули, которые внутри модуля admin за его пределами, но вдруг потребуется, как можно узнать абсолютный локальный путь до класса?

сейчас я использую

Код: Выделить всё

@common/modules/admin
,
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: генерация URL до модуля

Сообщение proctoleha »

kwasti писал(а): 2018.07.08, 11:18 Не могу сообразить как генерировать URL для модуля.

как можно узнать абсолютный локальный путь до класса?
И? Что вы хотите на самом деле? Узнать абсолютный путь до класса? Или, как генерировать URL для модуля?
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Аватара пользователя
Maxim Glushko
Сообщения: 98
Зарегистрирован: 2017.04.24, 19:16
Откуда: Україна, Одеса

Re: генерация URL до модуля

Сообщение Maxim Glushko »

Код: Выделить всё

['label'=>'Admin','url'=>[Url::to('admin', 'key' => $key)]]
А в конфиге:

Код: Выделить всё

'urlManager' => [
	// ...
	'rules' => [
		// ...
		'/admin/<key:[a-zA-Z0-9_.+-]+>' => 'путь к вашему контроллеру и методу в нём',
		// ...
	]
	// ...
]
И в методе, на который вы направляете, нужно обозначить параметр $key в скобочках.
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

Re: генерация URL до модуля

Сообщение kwasti »

все это мне кажется не то.
частично разобрался что мне нужно.

Еще раз опишу задачу:
Начну со структуры модулй:

Модуль Admin.
!--config
! !------config.php - конфиг модуля Admin со списком подключаемых подмодулей
!---Подмодуль фишка1
!---Подмодуль фишка2
!---Подмодуль фишка3
!--- ...
!---Подмодуль фишкаN

В модуле Admin есть свой Layout который формирует меню в заваисимости от назначений подмодулей.
получить список подмодулей в целом не проблема, получить basePath, controllerPath, viewPath модуля Admin, как я нашел, тоже не проблема.

Теперь чтобы получить instance самого модуля, есть getInstance() - как я ее раньше не видел? :oops:
но с этим методом есть нюанс, модуль должен быть загружен.
Вопрос: в какой момент модуль может быть не загружен? или в какой момент он становится загруженым?
скорее всего если контроллер или view этого модуля, то модуль скорее всего будет загружен.
а вот если создается объект модели этого модуля? (одна из моделей формирует массив своих элементов на основании списка модулей)
или когда выполняется код внутри контроллера или view подмодуля?
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: генерация URL до модуля

Сообщение maleks »

модуль будет загружен если он указан как bootstrap компонент или когда роут текущего запроса внутрь него смотрит
Ответить