Иногда требуется добавить поле к ORM объекту, которое должно иметь какое-нибудь сложное отображение. Предположим у вас есть объект "заказ" и вы желаете отобразить в нем надпись красным цветом "Нужно срочно позвонить клиенту и уточнить его данные", если заказ был оформлен без регистрации, в противном случае отображать надпись "Все ок".
Реализовывать данную задачу мы будем из нашего кастомного модуля ModuleName. Исходим из того, что простейший модуль создан и установлен в вашем магазине.
Для добавления поля обработаем событие orm.init.shop-order в нашем модуле. Создадим файл config/handlers.inc.php со следующим содержимым:
Форма заказа в административной панели разделена на несколько зон. Мы можем включить отображение поля в одной из следующих зон:
Для указания зоны отображения полю ORM объекта, в свойствах следует установить в true ключ footerVisible или dependVisible или infoVisible и т.д.
Для того, чтобы вывести произвольную информацию в заказ мы создали новое поле custom_field с типом . Такое поле не будет записываться в базу данных. Мы можем указать произвольный шаблон отображения данного поля через свойство template.
Создадим файл custom_field.tpl в папке /view/form/order нашего модуля со следующим содержанием:
В переменной $elem мы имеем объект заказа, соответственно можем обращаться ко всем его свойствам и методам. В данном примере нас интересует поле user_id - ID пользователя.
В итоге, получаем результат, если заказ оформлен без регистрации:
Если заказ оформлен от имени зарегистрированного пользователя: