Узкие места в разработке своих компонентов
Первое знакомство с Revo у меня было год назад (примерно), около месяца я ломал свой мозг о это чудо (да-да, ибо такой наплыв информации — xPDO/PDO, ExtJS, RevoAPI, etc, сильно корежит когнитивную карту мира), под предлогом работы и учебы я вяло «стёк» с рельсов Revo-локомотива.
На данный момент появилось достаточно свободного времени для дальнейшего «вкручивания помидоров» своему сознанию. Перелопатил много постов, нарисовал проект памятника Васе в тетрадке (такой труд… никакой иронии прошу заметить) и его блогу. Но, хоть в целом картина разработки компонентов ясна, остаются «узкие места», ответы на которые можно получить (кажется мне) методом «тыка» и задаванием вопросов без оглядки на их глупость, к чему я и подвожу читателя в этом эпично занудливом (уже) сабжике)
Как создавать свои компонеты?
В абсолютной тишине громогласно вопияет риторический вопрос мне — «А где был твой мозг, когда ты лопатил посты по теме?!» — «Рисовал памятник же *заливается краской*»…
Разобью вопрос:
1) Как выглядит архитектура компонента?
2) Как работает компонет, то есть клик на кнопку «добавить запись» на странице компонета в админке что происходит при отсылке POST запроса с mgr/action=действие, как оно (действие) обрабатывается?
3) Формирование json-массивов данных для extJS при возврате ответа (формировании грида скажем), где происходит и как?
4) Взаимодействие ExtJS с php кодом компонета, то же интересует.
5) *Моя совесть не позволяет плодить вопросы более*
На данный момент появилось достаточно свободного времени для дальнейшего «вкручивания помидоров» своему сознанию. Перелопатил много постов, нарисовал проект памятника Васе в тетрадке (такой труд… никакой иронии прошу заметить) и его блогу. Но, хоть в целом картина разработки компонентов ясна, остаются «узкие места», ответы на которые можно получить (кажется мне) методом «тыка» и задаванием вопросов без оглядки на их глупость, к чему я и подвожу читателя в этом эпично занудливом (уже) сабжике)
Как создавать свои компонеты?
В абсолютной тишине громогласно вопияет риторический вопрос мне — «А где был твой мозг, когда ты лопатил посты по теме?!» — «Рисовал памятник же *заливается краской*»…
Разобью вопрос:
1) Как выглядит архитектура компонента?
2) Как работает компонет, то есть клик на кнопку «добавить запись» на странице компонета в админке что происходит при отсылке POST запроса с mgr/action=действие, как оно (действие) обрабатывается?
3) Формирование json-массивов данных для extJS при возврате ответа (формировании грида скажем), где происходит и как?
4) Взаимодействие ExtJS с php кодом компонета, то же интересует.
5) *Моя совесть не позволяет плодить вопросы более*
Комментарии: 19
1. Скачать PhpStorm, 30 дней триала
2. Скачать modExtra
3. Настроить PhpStorm на удобную работу с Рево (требуется подписка)
4. Учиться, учиться и еще раз учиться.
Многое должно проясниться. Без IDE разбираться, как работают компоненты Рево могут только очень крепкие мозгом люди.
2. Скачать modExtra
3. Настроить PhpStorm на удобную работу с Рево (требуется подписка)
4. Учиться, учиться и еще раз учиться.
Многое должно проясниться. Без IDE разбираться, как работают компоненты Рево могут только очень крепкие мозгом люди.
Спасибо
Кстати, ты вот эту заметку-то читал? Там наиболее подробно расписано всё, что тебя интересует.
Да, читал, правда этот вариант без _builder'а, modExtra с твоим авторством лучше.
Сорри, что вмешиваюсь в разговор :-) С Наступившим!
А данная заметка в настоящее время актуальна?
А данная заметка в настоящее время актуальна?
Спасибо! Для курса без разницы, какой MODX, 2.2 или 2.3?
В целом — да.
У меня получилось при помощи этого rtfm.modx.com/display/ADDON/CMPGenerator
Опаньки. Щас пощупаем-с. Я не надеюсь на мега автокомплит кода, но было бы неплохо заиметь инструмент, сокращающий время разработки базовых вещей (то есть хочу увидеть а-ля генератор заготовок более «широких» и «глубоких», чем modExtra)
CMPGenerator мне тоже понять структуру просто создать базовый а там уже как обычный PHP5 классы и xPDO если знать, то вполне понятно что куда+ свои таблицы прятать и тд
на мой взгляд проблема не впхп а в ExtJs. По нему есть спецификация но живых примеров очень мало те что на сайте весьма синтетические.
Вот перевод вроде бы с рабочими корректировками создания собственного приложения на базе doodles.
modx.ws/razrabotka-dopolneniya-v-modx-revolution
modx.ws/razrabotka-dopolneniya-modx-revolution-2
Я 2 месяца назад пытался разобраться в этом деле по мануалу на modx.com — не получилось там во 2 части мануал для 2,2 версии и есть отличия в итоге если по мануалу делать не выходит каменный цветок.
Эти 2 ссылки кажись с корректировками на свежую версию.
Вот перевод вроде бы с рабочими корректировками создания собственного приложения на базе doodles.
modx.ws/razrabotka-dopolneniya-v-modx-revolution
modx.ws/razrabotka-dopolneniya-modx-revolution-2
Я 2 месяца назад пытался разобраться в этом деле по мануалу на modx.com — не получилось там во 2 части мануал для 2,2 версии и есть отличия в итоге если по мануалу делать не выходит каменный цветок.
Эти 2 ссылки кажись с корректировками на свежую версию.
Еще не читал, но видно полезно, Про себя я имел виду базовые знания с помощью него я хотя бы понял как работать со своим дополнением (классом и своей таблицей) внутри modx Api через xpdo. То есть создать свой класс на основе скажем modUser, и внести в свою таблицу некоторые значения из своего класса через xpdo и что бы он подгружался при создании общего modx класса.
До этого даже как то трудно было понять структуру и описание класса и как она работала и все эти схемы и тд, щаз уже проще ) очень плоха документация на этот счет или очень быстро устаревает или я вернее просто попал на изменения с 2.0 и 2.2
До этого даже как то трудно было понять структуру и описание класса и как она работала и все эти схемы и тд, щаз уже проще ) очень плоха документация на этот счет или очень быстро устаревает или я вернее просто попал на изменения с 2.0 и 2.2
доку не меняли давно и она во многих местах устарела… на мой взгляд, а руки у авторов не доходят переписать
Спасибо за ссылкиу
Читаю, пробую, однозначно в копилку.
Просто, не смотря на блог Васи, информации плана Best practice, рабочих решений (не исследований и hello world скудных примеров, etc) мало, и она «размазана» по сети)
Данный блог конечно «тащит».
Просто, не смотря на блог Васи, информации плана Best practice, рабочих решений (не исследований и hello world скудных примеров, etc) мало, и она «размазана» по сети)
Данный блог конечно «тащит».
Вся проблема в лени (: вообще документации полно, заходишь на сайт extjs и читаешь там все доступно и понятно написанно, если есть понимание структуры mvc и базовые знания js то это совсем не проблема
У меня получилось при помощи этого rtfm.modx.com/display/ADDON/CMPGeneratorУдобно, очень.
1) Создаешь таблицу(ы)
2) Все остальное делает компонент
3) Можно прописывать relation связи в xml (если нужно) и, присовокупив _builder, собрать пакет. (?)
Это вроде правильнее, чем запускать gen.php из этого поста на хабре, больше соответствует идеологии modx'а.
Из modx.ws/razrabotka-dopolneniya-modx-revolution-2
То есть к «errorName» прибавится «doodles.doodle_», на выходе — «doodles.doodle_errorName», что соответствует $_lang['doodles.doodle_errorName'].
Не знал)
Спасибо за ссылки и советы, все пригодилось и помогло!
<?php
class DoodleGetListProcessor extends modObjectGetListProcessor {
public $classKey = 'Doodle';
public $languageTopics = array('doodles:default');
public $defaultSortField = 'name';
public $defaultSortDirection = 'ASC';
public $objectType = 'doodles.doodle';
}
return 'DoodleGetListProcessor';
?>
$objectType — это часто используется для определения какие строки лексикона об ошибке загружать при отборе данных. Так как в нашем файле словаря находяться все строки в виде $_lang['doodles.doodle_blahblah'] или схожем, то мы определим префикс как «doodles.doodle». MODX далее будет прикреплять префикс к стандартным сообщениям об ошибке.
То есть к «errorName» прибавится «doodles.doodle_», на выходе — «doodles.doodle_errorName», что соответствует $_lang['doodles.doodle_errorName'].
Не знал)
Спасибо за ссылки и советы, все пригодилось и помогло!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.