Добавляем контроллеры в свой проект на Evo 2.0

Для чего нужны контроллеры?
Контроллеры в большей степени нужны для того чтобы убрать сложные логические конструкции из View части нашего проекта. В том числе окончательно избавиться от такой сущности как сниппет.

Как подключить контроллеры?
Всё достаточно просто. Сейчас проходит работа по выносу процесса формирования страницы в отдельный процессор. И при помощи своего пакета мы можем расширить определённые функции и подставить свои действия. Именно этим мы и воспользуемся.

Продемонстрирую на примере своего решения

Мы создадим свой ServiceProvider, в котором зарегистрируем свой процессор
public function register()
{
    $this->app->singleton('TemplateProcessor', function ($app) {
        return new SeriousTemplateProcessor($app);
    });
}

И создадим свой процессор. В котором модифицируем функцию getBladeDocumentContent
Фактически это будет копия исходной функции, за исключением нескольких строк. Которые фактически и решают проблему подключения контроллеров.
$className = 'Serious\\Controllers\\' . ucfirst($templateAlias) . 'Controller';
if (class_exists($className)) {
    $customClass = new $className();
    $customClass->render();
}
 

В этом примере я использую отдельный пакет, в котором у меня сформированы отдельные контроллеры, завязанные на alias шаблона.
Т.е. фактически до получения View мы будем выполнять необходимые действия на php и можем передать определённые данные прямо во View.

Живой пример того как это можно использовать


Т.е. фактически контроллер TestController наследует главный контроллер из которого мы передаём одни данные и добавляем свои данные, которые так же передаём во View.

28 комментариев

avatar
Я так понимаю, что без углубленных знаний php EVO 2.0 можно даже не рассматривать в качестве CMS для сайта.
avatar
По желанию. Старый вариант работы с Evolution работает в 1.4.x и в 2.0 абсолютно одинаково. Просто 2.0 даёт больше гибкости и удобства. Всё это в перспективе будет описано и записано. Мой вариант статьи не претендует на доступность, я не умею красиво и просто описывать вещи.
avatar
Только вот это «по желанию» может обернуться другой стороной. Сам я себя считаю программистом PHP, и со многими задачами с помощью гугла справляюсь. Но может возникнуть ситуация когда программист сделает «по желанию», сдаст проект, а через некоторое время попросят верстальщика подправить. А чё там, это жэ MODX EVO, всё там легко, не один раз делал — подумает верстальщик. И вот тут-то возникнет недопонимание. Бл..., кто и что тут испортил систему. Было всё так легко, понятно, доступно даже мне! А, А, А! Так что — «По желанию» может легко обернуться спадам желанием делать легкие простые сайты на modx evo. Это мое личное мнение. Как сейчас позиционируется MODX EVO, для кого? И как будет. Прошу меня не пинать, я так-то добрый.
avatar
Увы, видимо, да. Эво приобретает новые возможности, открывающие новые перспективы. Но всё более отдаляется от «масс». Это дает поводы для серьезного беспокойства о будущем системы, у сожалению.
avatar
Совсем недавно попросили так кое-что подправить на MOD REVO. Очень приятно удивила скорость работы админки. На первых версиях REVO админка еле как шевелилась, бесила ужасно. Теперь вот возможно как вариант.
avatar
Оффтопом занимаемся, ну да ладно. Рево мне не нравится, чем-то напоминает Джумлу, возможно своей громоздкостью, что ли.

Да и админка… я тоже периодически делаю правки, и не на самых старых версиях. Но тормозит везде, жутко.

И перекинуть с локалки на хостинг и обратно — это бывает целая история. В общем, «не фонтан».
avatar
В REVO куча проблем и уж куда куда а на нее уходить в 2019 явно не стоит вот пару причин:

— Extjs 3
— XPDO
avatar
Ево не отдаляется от масс а Приближается к ним!
посмотрите сколько людей пользуется MODX парсером а сколько Blade или Twig? а сколько использует modx->db в сравнении c Eloquent?
Про то стоит ли вообще переходить на MVC патерн я вообще молчу ибо все фреймворки работают на нем в том числе и Yii и Laravel.

тоесть изучая новые плюшки EVO 2.0 вы приблежаетесь к тому как работают в других системах.

то что EVO 1.4 и MODX отстает от общепринятых это факт!
Я же стремлюсь к тому что б мы в EVO работали по тем же принципам что в Yii и Laravel да тот же OpenCart весь н MVC

Я понимаю что многим может показаться что мы отдаляемся от сообщества но это не так.
avatar
Дмитрий, вы уже сейчас говорите на языке малопонятном для 99% пользователей 1.4.+
Возможно, что это все хорошо и это надо все изучать. Но Изначально MODx Evolution была доступна для не программистов. Легко осваивалась и легко внедрялась. Сейчас же, объем знаний для овладения всеми новыми плюшками зашкаливает за среднестатистический объем знаний обычного человека. И тенденция такова, что скорость внедрения плюшек в разы опережает скорость обновления документации и появления каких-то гайдов.
Возможно, что вернуть к Evo 2.0 непрограммистов возможно, но как? Дорабатывать интерфейс? Нашпиговывать систему готовыми модулями? Есть еще варианты?

Я ведь не осуждаю что вы делаете. Я просто не вижу путей и реальной необходимости перехода к 2.0. Зачем? Чтобы сайт-визитка на этой системе стал… чем? Что даст 2.0 большинству сайтов, которые есть в инете визитки, лендинги, каталоги, чего не может дать 1.4.+?
Просто мне кажется, мы сейчас столкнулись с той же ситуацией, когда разделились REVO и EVO.
Комментарий отредактирован 2019-07-30 17:12:32 пользователем tiptop
avatar
Ветка 1.4 будет поддерживаться и в ней будут правиться критикал задачи + вопросы безопастности. Этого более чем достаточно тем пользователям которые хотят делать сайты но не развиваться. Пользуйтесь в чем проблема?
avatar
Вопрос был, а зачем переходить на 2.0?
Вы столько сил и средств убиваете на развитие 2.0, а люди возьмут и останутся на 1.4. Какая мотивация к переходу?
avatar
Не хотите учить нового не учите, я то тут при чем?

Я делаю и развиваю EVO так что б это был современный удобный инструмент в котором приятно работать и который будет конкурентный. Это не CMS для динозавров. Да, возможно большая часть сообщества не поймет и останется на 1.4 но я прикладываю максимум усилий что б оставить обратную совместимость, тоесть можно без проблем обновить сайт с 1.4 до 2.0 и все будет работать ( за исключением очень старых, редких, или самописных решений)

На текущий момент мне нравиться работать с EVO, да там есть еще много моментов которые нужно допилить и проверить, собственно поэтому пока и нет документации и бестпрактик, ибо нужно все проверить на живых проектов и только после задокументировать и записать уроки + на все это нужно время, притом не мало.

Да и самое интересное что я ориентируюсь на 1% сообщества который как минимум интересуется и задаёт вопросы как и что работает по новосу, что почитать что попробовать. Вместо тех 99% которые не хотят развиваться им же и так все ок, хотя для них есть 1.4 LTS как минимум до 2021 года я ее поддерживать буду, о чем писал в релизе, так что еще полтора года те кому и так все ок могут спать спокойно, а там время покажет
avatar
Традиционный срач 1.4 / 2. Есличо я из «дизайнеров», которые только и умеют, что плейсхолдеры по шаблонам распихивать.

Вам уже там ниже разъяснили, в каком именно месте ваше мнение неправильное :) Если бы проводился опрос среди того, куда должен двигаться Evo2, правящая партия проиграла бы с громким треском. Потому что большинству разработчиков достаточно и того, что есть, лишь бы мануалы были не в стиле «посмотреть в код, там всё понятно» и описанные функции делали, что должны.

Пока что для версии 2 не показан ни один из реально применимых компонентов, который, хрен с ним, без магазина поставить, а с гитхаба скачать и распаковать, и он бы хоть что-то делал. Даже инсталлятор саму систему не может поставить.

После окончания поддержки 1.4.x с 90% вероятности, эту ветку никто не форкнет, ибо нет коммерческого интереса и она сгинет, а поддержку и дальше никто не обещал. Без инвестора дело загнется.

Количество средних разработчиков на Evo резко сократится и до места в десятке на том же CMSMagazine будет еще дальше, чем сейчас. Невозможно объяснить, чем 2.0 будет лучше битрикса того же. Это совершенно не тот уровень проектов, который привычно видеть.

У нас, например ВООБЩЕ ВСЕ студии в городе, более-менее заметные на рынке, кроме пары штук, работают на Evo после того, как я написал про нее обзор в своем блоге то ли в 2007 то ли в 8 году, у большинства клиентов с уже готовыми сайтами даже можно не задумываясь заходить на /manager и видеть там одно и то же.

А когда мне захочется поиграться с Laravel в виде CMS или шаблонизатором twig, я поставлю October или Grav соответственно
avatar
Не правильно понимаете это все идет как доп функционал!
Базовый функционал как работал так и работает если хочется работать из браузера с елементами в базе то работайте :)
avatar
Вообщем и целом вы ж ушли в IT и в IT ясное дело надо всегда быть на волне.

Сейчас волна это стандарты и патерны зная которые все равно с какой системой работать само собой если система использует эти вещи

как по мне знания Blade, Eloquent, Controllers, Models, Migration это половина того что используется в том же Laravel и не только
тоесть учим 1 систему а скилы получаем в нескольких
avatar
Про REVO возможно Вы правы, для себя я отметил скорость работы админки по сравнению с ранними версиями REVO, это когда она было огромным тормозом.
Знание Blade, Eloquent, Controllers, Models, Migration это конечно хорошо, а где-то даже очень. Да и встречал я некоторые понятия на практике при написании модулей для разных админок. И да при написании админских модулей возможно такой подход правильный. Но всё равно все эти вещи будут отпугивать просто строителей сайтов\дизайнеров.
Программисты справятся, но зачем им это надо?! Я имею ввиду вообще использовать MODX EVO. Ведь посмотрите кто требуется на рынке труда PHP прогеров — Yii, Laravel и так далее(битрикс). Так зачем программисту будет нужен MODX EVO, если в резюме он должен написать БИТРИКС, Yii, Lavarel? Почему он должен сделать выбор в пользу MODX EVO даже если он использует самые передовые концепции? Вот когда работодателю нужен будет программист MODX EVO, тогда да конечно, все напишут.
Тут надо решать для кого MODX EVO сейчас и для кого будет. У дизайнера и начинающего сайта-деятеля Blade, Eloquent, Controllers, Models, Migration не вызовут желания использовать систему. Начинающий PHP программист начнет изучать то что на данный момент востребовано, а когда хорошо изучит конечно сможет использовать все навороты и MODX EVO, только зачем он туда пойдет когда и так всё хорошо в Lavarel.
Комментарий отредактирован 2019-07-30 18:31:07 пользователем Redduck
avatar
Я не знаю кому что надо, но я знаю что нужно мне и куда я хочу развивать свою команду. Я росту как специалист и как Бизнесмен. Соотвественно меняются потребности и нужно менять так же и инструмент с которым мы работаем.

— Простых проектов стало в разы меньше все ушло на тильду.
— Ко мне приходят более сложные проекты но не достаточно сложные что б сразу делать на Laravel.
— Мне очень нравиться EVO поэтому я его развиваю

Так как кроме меня EVO развивает очень мало ребят то я беру на себя ответственность в какую сторону развивать EVO

p.s. IT не та сфера где можно 1 раз выучиться и на этом всю жизнь работать нужно развиваться.

По части того что EVO никому не нужно, так в текущем виде как в 1.4 оно точно не надо никому, а вот в ветке 2.0 есть перспективы.
avatar
Прошу меня не пинать, я так-то добрый. И у меня нет и не может быть никаких претензий, так как мне ничего не обещали и денег я за разработку EVO не платил
Мне тоже нравиться работать с EVO, так что большое Вам спасибо за разработку.
И тут всё просто:
Я не знаю кому что надо, но я знаю что нужно мне и куда я хочу развивать свою команду. Я росту как специалист и как Бизнесмен. Соотвественно меняются потребности и нужно менять так же и инструмент с которым мы работаем.
Так как кроме меня EVO развивает очень мало ребят то я беру на себя ответственность в какую сторону развивать EVO
Всё четко и понятно. А вот — «по части того что EVO никому не нужно в текущем виде» не согласен. Вы же сами написали что как специалист (PHP программист) выросли. И инструмент Вам нужен по мощнее.
А я во всех своих комментах в этой теме пишу:
Тут надо решать для кого MODX EVO сейчас и для кого будет
Решать не мне. Еще раз повторю что себя я считаю PHP программистом и меня вообще не пугает то что инструмент будет мощнее. Но есть большая категория людей которые с легкостью строили\переделывали\доделывали сайты на MODX EVO, но не являются ПЫХ прогерами. И для них этот инструмент со временем может оказаться не по зубам.
Всем кто ищет клад — удачи!
Кто работает — успехов!
Комментарий отредактирован 2019-07-30 19:44:48 пользователем Redduck
avatar
Для них есть 1.4.8 LTS им же нужна стабильность из ваших же слов. Ну а что может быть стабильней? Чем гарантия закрытия критических багов и проблем с безопасностью?

Как будет время потестирую новый FormLister и будет 1.4.10.

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

— есть новая 2.0 над которой работаем и которая активно развивается и тестируется мной и моей командой ибо уже почти год все новые сайты только на ней
— есть проверенная и рабочая ветка 1.4 LTS с заявленной поддержкой до 21 года, где все стабильно и спокойно. И до тех пор пока не будет норм документации, уроков, примеров никто 1.4 бросать не будет.

Вообщем не понимаю в чем сыр бор и что не так?
avatar
Вообщем не понимаю в чем сыр бор и что не так?
Потому что ты смотришь на ситуацию как продвинутый специалист и ГЛАВНЫЙ РАЗРАБОТЧИК MODX EVO. Твое право выбирать направление куда будет двигаться система мной не ставится под сомнение! И все кто использовал, использует или будет использовать в будущем скажет большое спасибо за разработку.
Возможно ситуация приближается примерно как EVO <=> REVO.
Ведь тогда одни разработчики по каким-то причинам (права разработчиков на то решение не обсуждаются) решили делать REVO, а кто-то (еще раз подчеркну — большое спасибо за разработку) решил не оставлять EVO. И сделал много хороших решений в EVO. Вот почему другой разработчик не ушел на «модную, современную, продвинутую» REVO тогда?
Но время не стоит на месте, и люди ростут и им уже тесно в некоторых рамках. И вот разработчик принимает решение (права разработчиков на это решение не обсуждаются).
Вполне возможно что в 2021 году кто-то возмет ветку 1.4.х и назовет MODX-старушка и дальше будет развивать в старой концепции.
И всё будет как при бабушке :)
avatar
Все может быть :) Если честно я только буду рад если кто то еще будет развивать:)

Переход EVO -> REVO и 1.4 -> 2.0 сложно сравнивать ибо
что б перейти с 1.4 на 2.0 все что надо это перезалить файлы и обновить дополнения и все :) ни синтаксис ни снипеты ничего менять не надо :)

Я собственно поэтому и не вижу проблем почему все косо смотрят в 2.0 пиши как писал в чем проблема?
а тем кто понял зачем надо IDE, Blade и тд может им пользоваться для остальных ничего не поменялось :)

p.s демосайт на 1.4 и на 2.0 один и тот же :)
avatar
Кстати, а какую IDE используете? я так и не привык к полноценным IDE, подсел на VS Code. А вы, скорее всего, PHPstorm?
avatar
PhpStorm
Темболее они дают лицензию под опенсорс так что вообще хорошо
avatar
Я не знаю кому что надо, но я знаю что нужно мне и куда я хочу развивать свою команду.

Теперь хотя бы стало понятно — какие цели ставятся при развитии Эво. Раньше они не озвучивались.

Итак, ваша цель: создать максимально удобный инструмент для вас и для вашей команды. С помощью которого вы сможете выполнять появляющиеся заказы, применяя современный инструментарий разработки.

То есть система развивается в интересах нескольких человек (и вы имеете на это право), цель привлечения широких масс непрограммистов не стоит.

Поэтому я и писал: «Это дает поводы для серьезного беспокойства о будущем системы, у сожалению».

Былой популярности у неё уже не будет.

P.S. Вы остро реагируете на любые попытки обсудить пути Эво, поэтому подчеркиваю — это не претензия и не критика. Это размышления по поводу — можно ли надеяться, что Эво через годик не почит в бозе.
avatar
Я эту цель озвучивал начиная с 2013 как начал поддерживать Ево.

Единственное если раньше больше был акцент на разработчиков фриланс то сейчас больше акцент на командную разработку. Но замечу что это никак не в минус а плюс ибо скорректировали в сторону актуальных подходов.

Цели сделать из EVO Вордпресс никогда не было, ибо цель это удобный инструмент для разработчиков и менеджеров а не собери кнопками.

Для того что б Evo стал популярен нужно больше статей документации и примеров но сами понимаете что пару человек это не в состоянии охватить. Как результат маркетинга у Ево нет вообще, и слабая документация.

Я чуть меньше года назад написал что версия 1.4 LTS как минимум до 2021 года, и что будет поддержка все это время.

Ну и в целом забрасывать так же не собираюсь ибо:
— очень много клиентов и проектов на Ево, которые доверились мне.
— всегда будут проекты на которых нет смысла использовать фреймворки и тут Ево как раз куда удобней и лучше всяких ВП
— ну и поддерживать и развивать ЕВО это хорошая реклама моей команды + продукт который показывает на что сы способны.

Тоесть я занимаюсь развитием EVO не только как хобби но есть и коммерческий интерес. Собственно совмещение этих вещей и дает мне сил поддерживать и развивать EVO не смотря ни на какие брожения в сообществе.

Последний год, я активно занимаюсь развитием команды на текущий момент мы выросли до 16 человек в офисе, и продолжаем расти, это требует много сил и времени, поэтому EVO ушла чуть чуть на второй план, но это был осознанный выбор ибо нужно доформировать команду и отладить все процессы, после чего смогу полноценно вернуться к развитию Ево. Собственно мне сейчас так же нужна документация, уроки и примеры что б не объяснять на каждом проекте в команде одно и тоже.

Надеюсь я ответил на ваш вопрос, и вы поймете почему EVO и дальше будет развиваться и поддерживаться.
avatar
А забыл добавить:
— Былой популярности у EVO быть не может без изменения акцентов. Ибо ниша сделай сайт нажав пару кнопок плотно занята WP + активно развиваются конструкторы типа Тильда, Викс. С ними конкурировать бесполезно.

— Я остро реагирую только на неконструктивную критику. Как пример лозунг: ‘оставьте все как было’ как по мне это неконструктивная критика:
— никто не мешает вам пользоваться тем что есть
— мир меняется и оставить как было == не развиваться.

Покажите мне конструктивную критику с путями развития ЕВО что б к нему рос интерес и я с удовольствием прислушаюсь.
avatar
Ну что же, ваш ответ внушает некоторый оптимизм )) спасибо за потраченное на ответ время.

«Как результат маркетинга у Ево нет вообще, и слабая документация.» — это 100%.

Я иногда делал слабые попытки внести лепту, напр. доки по DLBuildMenu как-то писал, предварительно разобрав код для этого. Но понятно, что этого мало.

Я постараюсь выбрать время и напишу статейку по своему видению будущего Эво.

Это будет скорее не критика, а размышления-предложения.
Нужно, чтобы они созрели в голове — тогда и напишу.
avatar
Спасибо буду ждать. Я очень люблю критику ибо она дает посмотреть на еще 1 точку зрения. Это нужно что б выбрать правильный путь. Тоесть или убедиться что я иду правильно или скорректировать путь :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.