Алексей Ерохин
С нами с 23 сентября 2013; Место в рейтинге пользователей: #147UiCMPGenerator дополнение для создания пакетов
Hi, написал тут свое дополнение для создания пакетов UiCMPGenerator. За основу взято дополнение CMPGenerator, но в моем прикручен графический интерфейс для создания зависимостей типа Композиционная (Composite) и Агрегирующая (Aggregate), а также можно расширять родные таблицы Modx-a.
Для работы требуется MODX Revolution 2.3.х
Ссылка на офф репозиторий http://modx.com/extras/package/uicmpgenerator
Видео: http://youtu.be/Qkspw8kXwK4
Для работы требуется MODX Revolution 2.3.х
Ссылка на офф репозиторий http://modx.com/extras/package/uicmpgenerator
Видео: http://youtu.be/Qkspw8kXwK4
Наследуемость полей у расширяемых xPDO-классов
Всем привет!
Смотрите, когда в своих компонентах мы наследуемся от, допустим, modResource, то в схеме мы пропишем следущее:
Теперь то, что хочу сделать я.
У меня есть пара десятков сущностей (и, соответственно, таблиц), у каждой из которых должен быть определённый набор полей, вроде «кем создан», «когда создан», «активно», «удалено» и т.д.
Так вот по аналогии с расширением класса modResource подумалось мне сделать вот так:
Так вот.
Смотрите, когда в своих компонентах мы наследуемся от, допустим, modResource, то в схеме мы пропишем следущее:
<model package="myPackage" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="myPackage" phpdoc-subpackage="" version="1.1">
<object class="myObject" extends="modResource">
</object>
</model>
И, собственно, всё — объект myObject унаследует все поля, их свойства и методы от класса modResource.Теперь то, что хочу сделать я.
У меня есть пара десятков сущностей (и, соответственно, таблиц), у каждой из которых должен быть определённый набор полей, вроде «кем создан», «когда создан», «активно», «удалено» и т.д.
Так вот по аналогии с расширением класса modResource подумалось мне сделать вот так:
<model package="myPackage" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="myPackage" phpdoc-subpackage="" version="1.1">
<object class="myObjectTemplate" extends="xPDOSimpleObject">
<field key="active" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="deleted" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="createdby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="createdon" dbtype="int" precision="20" attributes="unsigned" phptype="timestamp" null="false" default="0" />
<field key="deletedby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="deletedon" dbtype="int" precision="20" attributes="unsigned" phptype="timestamp" null="false" default="0" />
<!-- в действительности будет ещё десяток таких полей + индексы к ним -->
</object>
<object class="myObjectOne" table="my_object_one" extends="myObjectTemplate">
<field key="my_object_one_field" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
</object>
<object class="myObjectTwo" table="my_object_two" extends="myObjectTemplate">
<field key="my_object_two_field" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
</object>
</model>
Таким образом, имеем объект-«шаблон», у которого прописаны определённые поля и не прописана таблица. И остальные классы, которые расширяют этот класс-«шаблон» и добавляют в себя собственные столбцы (коряво выразился, знаю).Так вот.
Ловля ошибок при отправке почты с сайта
Добрый день, сообщество!
Как многим известно, у объекта modUser есть замечательный метод modUser::sendEmail, который позволяет отправлять пользователю письмо буквально в одну строчку. Не надо вручную инициировать службу modPHPMailer, выяснять email пользователя — всё это уже сделали за Вас разработчики MODX в этом методе.
Но есть один недостаток — метод возвращает только булево значение.
Как многим известно, у объекта modUser есть замечательный метод modUser::sendEmail, который позволяет отправлять пользователю письмо буквально в одну строчку. Не надо вручную инициировать службу modPHPMailer, выяснять email пользователя — всё это уже сделали за Вас разработчики MODX в этом методе.
Но есть один недостаток — метод возвращает только булево значение.
Как не хакать сторонние классы
Бывает, что вы используете какой-то сниппет или компонент, и он немного вас не устраивает. Вам нужно поправить буквально пару строк, но вы понимаете, что при обновлении эти измения пропадут.
Что же делать?
Все просто — нужно расширить сторонний класс своими методами. По сути, это очень похоже на «классные процессоры», только без процессоров и использовать можно везде — это стандартная возможность ООП.
Что же делать?
Все просто — нужно расширить сторонний класс своими методами. По сути, это очень похоже на «классные процессоры», только без процессоров и использовать можно везде — это стандартная возможность ООП.