Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 17.10.2017 16:23:21

Хуки в приложении

Добрый вечер. Многие наверное работали с популярными цмс и цмф в которых есть модульная структура.
Так вот, я хочу тоже иметь модульную структуру в моем приложении. Для модулей я использую этот пакет https://github.com/nWidart/laravel-modules. Он идеально подходит для моей задачи. Но эти модули нужно внедрять в контроллеры вручную. Но это не удобно. Для решения этой проблемы во многих цмс и цмф используют хуки,что бы подключить шаблон модуля к примеру.
Я думаю сделать так:
- Создать директиву @hook('hook-name')
- Эта директива будит возвращать результат работы BaseModuleController, который в свою очередь будит родителем для всех контроллеров модулей.

Пока вот только это придумал. Может как то по лучше можно сделать?)

Изменено Testuser123 (17.10.2017 16:26:20)

Не в сети

#2 18.10.2017 17:48:00

Re: Хуки в приложении

я еще ток вдупляю php и чето мне подсказывает, что тебе нужно именно это https://www.youtube.com/watch?v=YORueJt … R&index=55 тут чел создает сайт, в котором есть у него главный макет и вкрапления каких ему надо блоков.. в следующем 56 уроке он в конце создает функцию renderOutput в которой переназначает блоки для той или иной страницы и генерит результирующую страницу.. полистай видюхи, проследи че он делает.

Не в сети

#3 19.10.2017 12:21:42

Re: Хуки в приложении

Но эти модули нужно внедрять в контроллеры вручную.

Что это значит?

- Эта директива будит возвращать результат работы BaseModuleController, который в свою очередь будит родителем для всех контроллеров модулей.

Результат работы контроллера? При том всегда BaseModuleController?
Не понял тебя.

Не в сети

#4 21.10.2017 18:28:50

Re: Хуки в приложении

  1. создает функцию renderOutput в которой переназначает блоки для той или иной страницы и генерит результирующую страницу

Спасибо. Обязательно посмотрю.

  1. Что это значит?

Ну к примеру, есть модуль который на главной выводит рандомную цитату из бд. При этому этого модуля свой контроллер, своя модель, свой шаблон.
У нас в приложении есть контроллер который отвечает за вывод главной страницы сайта,к примеру ??IndexController@index%%. И теперь, как вывести результат работы этого модуля на главной странице нашего сайта?

  1. Результат работы контроллера? При том всегда BaseModuleController?

Не понял тебя
Допустим у каждого модуля в контроллере есть свойство PHP$hook 'underMainMenu'.
И допустимя в шаблоне я поставил PHP@hook('underMainMenu'). И надо как то сделать, что бы этот хук,как то собрал все контроллеры и вернул результат их работы, укоторых в свойстве $hook,стоит то же значение что и у хука в шаблоне. Воткак то так.

Изменено Testuser123 (21.10.2017 18:29:17)

Не в сети

#5 21.10.2017 22:57:49

Re: Хуки в приложении

[QUOTE]Ну к примеру, есть модуль который на главной выводит рандомную цитату из бд. При этому этого модуля свой контроллер, своя модель, свой шаблон.[/QUOTE]

Так это плохая практика — писать нереюзабельный код.
А нереюзабелен он потому, что это плохая практика — из контроллера вызывать метод другого контроллера.

Так писать недопустимо. Нужна рандомная цитата? — модуль должен предоставлять что-то реюзабельное, а не жестко завязанное на контроллер.

Твои «хуки» похожи на эвенты для расширяемости вьюшек, привожу пример:
Приложение начинает рендерить html код меню, но, разные модули хотят добавить в меню что-то свое. Модули должны легко подключаться-отключаться.
Значит нельзя хардкодить построение меню, писав в коде поочередный вызов модулей.
Тогда это делается на эвентах.
Приложение тригерет эвент ’adminTopMenu’, желающие модули слушают этот евент и добавляют в навигацию что-то свое.
А модули на такие эвенты, как правило, подписываются в ServiceProvider.

Но, это никак не связанно с контроллером.
Посмотри как эти проблемы решает octobercms или попроще — kodicms.

Ты же вроде указал какой-то пакет для модульности и говоришь, что работал с популярными cms.
В чем проблема? =)
Хочешь просто изобрести заново?

Изменено covobo (21.10.2017 23:06:38)

Не в сети

#6 22.10.2017 17:11:29

Re: Хуки в приложении

Судя по твоему тексту тебе нужны не модули, а виджеты.

Посмотри https://github.com/arrilot/laravel-widgets

Не в сети

#7 23.10.2017 11:04:56

Re: Хуки в приложении

covobo, спасибо. Посмотрел я эти цмс,они на эвентах все делают. Вы правы.
DBR, спасибо. Посмотрю.

Не в сети

Подвал раздела