Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый вечер. Многие наверное работали с популярными цмс и цмф в которых есть модульная структура.
Так вот, я хочу тоже иметь модульную структуру в моем приложении. Для модулей я использую этот пакет https://github.com/nWidart/laravel-modules. Он идеально подходит для моей задачи. Но эти модули нужно внедрять в контроллеры вручную. Но это не удобно. Для решения этой проблемы во многих цмс и цмф используют хуки,что бы подключить шаблон модуля к примеру.
Я думаю сделать так:
- Создать директиву @hook('hook-name')
- Эта директива будит возвращать результат работы BaseModuleController, который в свою очередь будит родителем для всех контроллеров модулей.
Пока вот только это придумал. Может как то по лучше можно сделать?)
Изменено Testuser123 (17.10.2017 16:26:20)
Не в сети
я еще ток вдупляю php и чето мне подсказывает, что тебе нужно именно это https://www.youtube.com/watch?v=YORueJt … R&index=55 тут чел создает сайт, в котором есть у него главный макет и вкрапления каких ему надо блоков.. в следующем 56 уроке он в конце создает функцию renderOutput в которой переназначает блоки для той или иной страницы и генерит результирующую страницу.. полистай видюхи, проследи че он делает.
Не в сети
Но эти модули нужно внедрять в контроллеры вручную.
Что это значит?
- Эта директива будит возвращать результат работы BaseModuleController, который в свою очередь будит родителем для всех контроллеров модулей.
Результат работы контроллера? При том всегда BaseModuleController?
Не понял тебя.
Не в сети
- создает функцию renderOutput в которой переназначает блоки для той или иной страницы и генерит результирующую страницу
Спасибо. Обязательно посмотрю.
- Что это значит?
Ну к примеру, есть модуль который на главной выводит рандомную цитату из бд. При этому этого модуля свой контроллер, своя модель, свой шаблон.
У нас в приложении есть контроллер который отвечает за вывод главной страницы сайта,к примеру ??IndexController@index%%. И теперь, как вывести результат работы этого модуля на главной странице нашего сайта?
- Результат работы контроллера? При том всегда BaseModuleController?
Не понял тебя
Допустим у каждого модуля в контроллере есть свойство PHP$hook = 'underMainMenu'
.
И допустимя в шаблоне я поставил PHP@hook('underMainMenu')
. И надо как то сделать, что бы этот хук,как то собрал все контроллеры и вернул результат их работы, укоторых в свойстве $hook,стоит то же значение что и у хука в шаблоне. Воткак то так.
Изменено Testuser123 (21.10.2017 18:29:17)
Не в сети
[QUOTE]Ну к примеру, есть модуль который на главной выводит рандомную цитату из бд. При этому этого модуля свой контроллер, своя модель, свой шаблон.[/QUOTE]
Так это плохая практика — писать нереюзабельный код.
А нереюзабелен он потому, что это плохая практика — из контроллера вызывать метод другого контроллера.
Так писать недопустимо. Нужна рандомная цитата? — модуль должен предоставлять что-то реюзабельное, а не жестко завязанное на контроллер.
Твои «хуки» похожи на эвенты для расширяемости вьюшек, привожу пример:
Приложение начинает рендерить html код меню, но, разные модули хотят добавить в меню что-то свое. Модули должны легко подключаться-отключаться.
Значит нельзя хардкодить построение меню, писав в коде поочередный вызов модулей.
Тогда это делается на эвентах.
Приложение тригерет эвент ’adminTopMenu’, желающие модули слушают этот евент и добавляют в навигацию что-то свое.
А модули на такие эвенты, как правило, подписываются в ServiceProvider.
Но, это никак не связанно с контроллером.
Посмотри как эти проблемы решает octobercms или попроще — kodicms.
Ты же вроде указал какой-то пакет для модульности и говоришь, что работал с популярными cms.
В чем проблема?
Хочешь просто изобрести заново?
Изменено covobo (21.10.2017 23:06:38)
Не в сети
Судя по твоему тексту тебе нужны не модули, а виджеты.
Не в сети
covobo, спасибо. Посмотрел я эти цмс,они на эвентах все делают. Вы правы.
DBR, спасибо. Посмотрю.
Не в сети
Страницы 1