Доступ к структуре и содержимому полей таблицы в PHP-платформе Wad-er происходит через класс dbfield. Каждое поле в таблице представляется как объект со своими свойствами. Свойства содержат не только значения определенного поля, но и могут отображать параметры доступа к полю (только для чтения), параметры отображения поля в форме (скрытое или нет), запись в журнал действий с полем и многое другое.
Ниже идет перечисление всех этих свойств:
Свойство | Значение |
val | Значение поля |
refval | Ссылочное поле. |
type | Тип поля |
req | Обязательное (необязательное) поле для заполнения в форме объекта |
hide | Скрытое поле в форме объекта |
lang | Многоязычность поля |
ro | Поле только для чтения |
log | Все изменения с полем будут записаны в лог |
tab | Вкладка, на которой будет отображаться поле |
width | Длина поля в БД |
uniq | Уникальность поля |
encr | Шифрованное поле |
rich | Подключен ли к полю wysiwyg-editor (напр., TinyMCE) |
dbtype | Тип поля в базе данных (БД) |
size | Длина поля в форме объекта |
key | Является ли поле ключевым |
auto | Автозаполнение поля в форме объекта |
options |
Если поле типа select, к нему формируется нумерованный или ассоциативный массив вида:
//нумерованный
$f->fields->options = array('-','elem1', 'elem2', 'elem3');
//ассоциативный
$f->fields->options = array('0'=>'-', 'key1'=>'elem1', 'key2'=> 'elem2', 'key3'=> 'elem3');
Здесь $f - объект прототипа ($f = new wPrototype('table').
Далее этот массив преобразуется в html-код элементов option формы. Например, если массив нумерованный:
< select > < option value='0' >-< /option > < option value='1' >elem1< /option > < option value='2' >elem2< /option > < /select > Если массив ассоциативный:
< select > < option value='0' >-< /option > < option value='key1' >elem1< /option > < option value='key2' >elem2< /option > < /select > |
sql |
Работает аналогично свойству options, только массив значений формируется в результате выборки из БД, например:
$f->fields->sql = 'SELECT id,name FROM table'; Результат отображается в виде списка выбора (select)
|
sqlid |
Работает аналогично sql, результат отображается в виде списка выбора (select), но сам запрос к БД не строится заново, а берется из библиотеки запросов (в панели управления меню Настройки–Каталог объектов-Типы данных-Sql). В свойство необходимо записать Код (Id) запроса, который вы хотите использовать.
Например, в модуле wCommerce возможно создание такого свойства поля:
$f->fields->sqlid = 'wcomm_sql2' |
sql_pars |
Параметры для sql-запроса, который задан через $f->fields->->sql или $f->fields->->sqlid. Параметры должны писаться через амперсанд - '&'.
Например:
$f->fields->sql = 'SELECT id,name FROM table'; $f->fields->sql_pars = 'country=45®ion=6'; Возможен вариант передачи параметров через js-код:
$f->fields->sqlid = 'wcomm_sql2'; $f->fields->sql_pars = "javascript:'companyid='+$('#id_company').val()"); |
extra_pars |
Передача дополнительных параметров в sql-запрос как части условия (WHERE) выборки данных, например:
$sql = " AND ((objid IN(SELECT DISTINCT r.row_objid FROM sys_obj_array r WHERE (r.row_objtype='sys_users')))) OR (objid='sys_superadmin')) "; $f->fields->sqlid = 'wcomm_sql2'; $f->fields->extra_pars = $sql; |
folder_select | В окне проводника возможность выбора папки. Если true – папка раскрывается и мы получаем доступ к содержимому папки, если false – мы можем кликнуть только по названии папки. Пример – кнопка «Выбор из дерева» поля «Родитель» в карточке страницы. При открытии окна проводника есть возможность раскрыть папку и выбрать подпапку в ней, значит, здесь $f->fields->folder_select = true; |
max_sel_rows |
Максимальное количество элементов, необходимых для отображения кнопки проводника.
$f->fields->extra_pars = 50; Здесь при количестве элементов меньше 50, в форме будет отображаться select-список, при количестве больше 50 – кнопка проводника.
|
adding_card | Данное свойство в процессе разработки |
labelfunc | Js-функция, которая срабатывает на label поля формы (например, функция может открывать карточку ссылочного поля) |
notes | Надпись или html-код возле поля. |
rows | Количество строк в поле типа textarea. |
auto_compl |
Автокомплит на поле. Свойство может принимать значения true/false, например:
$f->fields->auto_compl = true; |
attr | Атрибут поля |
export | Может ли поле экспортироваться в excel, csv. Свойство может принимать значения true/false, например: $f->fields->export = true;CSV-файл будет записан в каталог пользователя - userdata/user_username/, где username – системный код (Id) авторизованного пользователя |
sync |
Синхронизация полей при импорте.
Синхронизация происходит в порядке, который задается программно так:
$f->fields->artikul->sync = 1; $f->fields->name->sync = 2; $f->fields->company->sync = 3; Это означает, что при импорте первым будет сравнение по полю artikul, вторым – по полю name, третьим – по полю company.
В системе есть встроенные средства для синхронизации полей. Перейдите в панели управления в меню Настройки-Таблицы-Системные таблицы-Лог. В контекстом меню выберите Изменить. На вкладке Экспорт/Импорт можно определить 2 поля:
Экспортировать (да/нет) – опция, позволяющая производить экспорт поля;
Порядок синхр. – порядок синхронизации при импорте.
|
Приведем пример добавления записи в таблицу, где для каждого поля устанавливаются свои атрибуты:
$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();