Узкие места в разработке своих компонентов

Первое знакомство с Revo у меня было год назад (примерно), около месяца я ломал свой мозг о это чудо (да-да, ибо такой наплыв информации — xPDO/PDO, ExtJS, RevoAPI, etc, сильно корежит когнитивную карту мира), под предлогом работы и учебы я вяло «стёк» с рельсов Revo-локомотива.

На данный момент появилось достаточно свободного времени для дальнейшего «вкручивания помидоров» своему сознанию. Перелопатил много постов, нарисовал проект памятника Васе в тетрадке (такой труд… никакой иронии прошу заметить) и его блогу. Но, хоть в целом картина разработки компонентов ясна, остаются «узкие места», ответы на которые можно получить (кажется мне) методом «тыка» и задаванием вопросов без оглядки на их глупость, к чему я и подвожу читателя в этом эпично занудливом (уже) сабжике)

Как создавать свои компонеты?



В абсолютной тишине громогласно вопияет риторический вопрос мне — «А где был твой мозг, когда ты лопатил посты по теме?!» — «Рисовал памятник же *заливается краской*»…

Разобью вопрос:
1) Как выглядит архитектура компонента?
2) Как работает компонет, то есть клик на кнопку «добавить запись» на странице компонета в админке что происходит при отсылке POST запроса с mgr/action=действие, как оно (действие) обрабатывается?
3) Формирование json-массивов данных для extJS при возврате ответа (формировании грида скажем), где происходит и как?
4) Взаимодействие ExtJS с php кодом компонета, то же интересует.

5) *Моя совесть не позволяет плодить вопросы более*
Алексей
06 мая 2013, 10:01
modx.pro
2
3 099
0

Комментарии: 19

Василий Наумкин
06 мая 2013, 15:31
0
1. Скачать PhpStorm, 30 дней триала
2. Скачать modExtra
3. Настроить PhpStorm на удобную работу с Рево (требуется подписка)
4. Учиться, учиться и еще раз учиться.

Многое должно проясниться. Без IDE разбираться, как работают компоненты Рево могут только очень крепкие мозгом люди.
Andrey Shin
06 мая 2013, 20:43
0
У меня получилось при помощи этого rtfm.modx.com/display/ADDON/CMPGenerator
    Алексей
    06 мая 2013, 21:03
    0
    Опаньки. Щас пощупаем-с. Я не надеюсь на мега автокомплит кода, но было бы неплохо заиметь инструмент, сокращающий время разработки базовых вещей (то есть хочу увидеть а-ля генератор заготовок более «широких» и «глубоких», чем modExtra)

      Саша Пекшев
      06 мая 2013, 21:18
      0
      CMPGenerator мне тоже понять структуру просто создать базовый а там уже как обычный PHP5 классы и xPDO если знать, то вполне понятно что куда+ свои таблицы прятать и тд
        Мордынский Николай
        06 мая 2013, 22:26
        0
        на мой взгляд проблема не впхп а в ExtJs. По нему есть спецификация но живых примеров очень мало те что на сайте весьма синтетические.
        Вот перевод вроде бы с рабочими корректировками создания собственного приложения на базе doodles.

        modx.ws/razrabotka-dopolneniya-v-modx-revolution
        modx.ws/razrabotka-dopolneniya-modx-revolution-2

        Я 2 месяца назад пытался разобраться в этом деле по мануалу на modx.com — не получилось там во 2 части мануал для 2,2 версии и есть отличия в итоге если по мануалу делать не выходит каменный цветок.
        Эти 2 ссылки кажись с корректировками на свежую версию.

          Саша Пекшев
          06 мая 2013, 22:34
          0
          Еще не читал, но видно полезно, Про себя я имел виду базовые знания с помощью него я хотя бы понял как работать со своим дополнением (классом и своей таблицей) внутри modx Api через xpdo. То есть создать свой класс на основе скажем modUser, и внести в свою таблицу некоторые значения из своего класса через xpdo и что бы он подгружался при создании общего modx класса.
          До этого даже как то трудно было понять структуру и описание класса и как она работала и все эти схемы и тд, щаз уже проще ) очень плоха документация на этот счет или очень быстро устаревает или я вернее просто попал на изменения с 2.0 и 2.2
            Мордынский Николай
            06 мая 2013, 22:55
            0
            доку не меняли давно и она во многих местах устарела… на мой взгляд, а руки у авторов не доходят переписать
            Алексей
            06 мая 2013, 22:47
            0
            Спасибо за ссылкиу
              Алексей
              06 мая 2013, 22:52
              0
              Читаю, пробую, однозначно в копилку.

              Просто, не смотря на блог Васи, информации плана Best practice, рабочих решений (не исследований и hello world скудных примеров, etc) мало, и она «размазана» по сети)

              Данный блог конечно «тащит».
                Alex Vakhitov
                06 мая 2013, 23:48
                0
                Вся проблема в лени (: вообще документации полно, заходишь на сайт extjs и читаешь там все доступно и понятно написанно, если есть понимание структуры mvc и базовые знания js то это совсем не проблема
          Алексей
          06 мая 2013, 22:46
          0
          У меня получилось при помощи этого rtfm.modx.com/display/ADDON/CMPGenerator
          Удобно, очень.
          1) Создаешь таблицу(ы)
          2) Все остальное делает компонент
          3) Можно прописывать relation связи в xml (если нужно) и, присовокупив _builder, собрать пакет. (?)

          Это вроде правильнее, чем запускать gen.php из этого поста на хабре, больше соответствует идеологии modx'а.
            Алексей
            07 мая 2013, 00:36
            0
            Из modx.ws/razrabotka-dopolneniya-modx-revolution-2

            <?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'].

            Не знал)

            Спасибо за ссылки и советы, все пригодилось и помогло!
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              19