Класс Dbfields служит для представления каждого поля таблицы в виде отдельного объекта. Его можно использовать тогда, когда необходимо присвоить объекту поля какое-нибудь свойство, например, установить, что поле будет скрытым или использоваться только для чтения.
Класс Dbfields самостоятельно не используется – только вместе с объектом класса wPrototype. Инициализация класса происходит в конструкторе класса wPrototype:
class wPrototype { /** * Database field object * @var object */ public $fields = null; public function __construct($objtype = '') { //... include_once(SYS_BASE_PATH.'main/classes/fields.class.php'); $this->fields = new dbfields; //... } }
Далее использовать объект можно только как свойство fields класса wPrototype, например:
$f = new wPrototype('sys_comments'); $f->fields->flt2->hide = true; $s = $f->insert();
Здесь мы показываем, что перед добавлением записи в БД, поле flt2 устанавливается как скрытое, поэтому в карточке объекта оно показываться не будет. Карточка объекта – это интерфейс для отображения данных об объекте системы, например, в меню Элементы Сайта-Страницы при клике на любой ссылке страницы в списке страниц в правом фрейме покажется карточка страницы. Поле Разрешить поиск (flt2) при установленном $f->fields->flt2->hide = true здесь показываться не будет.
Подробнее свойства класса Dbfields описаны в п.Доступ к структуре и содержимому полей таблицы. Использовать их необходимо аналогично показанному выше примеру.
Пример добавления записи с установкой значений полей с помощью Dbfields:
Перед добавлением в БД установим значения для полей id, objid, username, comments, userip. Для поля createdon установим свойство «только для чтения», для objid – свойство «скрытое поле», id и objid – поля обязательные.
include_once(SYS_BASE_PATH.'main/classes/wprototype.class.php'); $f = new wPrototype('sys_comments'); //устанавливаем значения для полей $f->fields->id->val = '1000'; $f->fields->objid->val = 'sys_pages_main'; $f->fields->username->val = 'admin'; $f->fields->comments->val = 'Text comment'; $f->fields->userip->val = '127.0.0.1'; $f->fields->createdon->ro = true; //только для чтения $f->fields->objid->hide = true; //скрытое $f->fields->id->req = true; //обязательное $f->fields->objid->req = true; $s = $f->insert(); //отображаем сообщение об ошибке, если есть if($s) print $s;
Пример обновления записи с установлением определенных свойств полей:
Установим новое значение для поля comments.
include_once(SYS_BASE_PATH.'main/classes/wprototype.class.php'); $f = new wPrototype('sys_comments'); $f->id = '1000'; $f->read(); $f->fields->comments->val = 'Other comments'; $s = $f->update(); //отображаем сообщение об ошибке, если есть if($s) print $s;
Дополнительная ссылочная карточка
Пример добавления js-функции, которая срабатывает при клике на label поля формы. Функция будет открывать карточку ссылочного поля:
$this->fields->ourcompanyid->labelfunc = "openWinc('".$parser->makeUrl('wcrmp_company_card')."', '&objid=:value:'); return false;";
Пример работы свойства можно посмотреть после установки модуля wCRM. В панели управления Wad-er появится дополнительное меню: wCRM admin-Задачи-Карточки. В правом фрейме в интерфейсе карточки можно увидеть поле Организация (ourcompanyid). При клике на названии поля откроется всплывающее окно с карточкой активной организации.