Краткий справочник по параметрам метадаты
Deprecated
==========================
is_multy_use
is_select
==========================
Соотвествия полей
==========================
val_type => input_type
==========================
boolean => checkbox
boolean => label
==========================
datetime => datetime_ajax
datetime => label
==========================
date => date_ajax
date => label
==========================
int => select
int => text
int => label
int => label_sel
==========================
float => text
float => label
==========================
string => select
string => password
string => text
string => label
string => label_sel
string => image
string => file
string => file_select
==========================
text => formated
text => textarea
text => texteditor
==========================
timestamp => timestamp
==========================
Линки в метадате (принцип и логика использования)
Структура массивов стандартная : индекс поля - значение
описываются линки 4 параметрами
public $link = array(); // Ссылка для значения ячейки
public $link_vars = array(); // Параметры для подстановки в link
public $link_types = array(); // Параметры для подстановки в link ( например popup)
public $link_picture = array(); // Картинка для подстановки в ячейку
Обработка начинается если передан индекс поля : то есть массив $link - должен быть заполнен
Варианты заполнения массива $link:
1.Если в качестве ссылки используется значение из БД, пишем field. Пример : "link"=>array("15"=>'field')
2.Если просто нужно вызвать ссылку кликом на ячейке - пишем саму ссылку.
Для подставновки параметров в строку ссылки используется счетчик параметров , значение счетчика начинается с 0
Пример : "link"=>array(2=>'index.php?module=__module__&view=__view__&psid=[0]')
При обработке происходит распарсивание соответствующего элемента массива $link_vars и подстановка значений в ссылку
Пример ссылки с несколькими параметрами в строке
"link"=>array(1=>'index.php?module=catalog&view=images&task=modify&psid=[0]&multy_code=[1]'),
"link_key"=>array(1=>'$id,i_gid') // тут 1 элемент расчетный параметр, второй значения поля этой строки
Дополнительные условия на запрос
Формат использования
в метадате (будет применяться всегда)
$custom_sql=" AND c.u_role=90";
в контроллере
$viewname = $this->getView()->getName();
$mdl = Module::getInstance();
$this->checkACL("view".ucfirst($mdl->getName()).ucfirst($viewname));
$reestr = $mdl->get('reestr');
// это кусок запроса
$reestr->set('custom_sql'," AND c.u_role=90");
Организация линковочных таблиц
Линковочные таблицы используются для организации дополнительных множественных связей неявного характера.
Например товары, относящиеся к нескольким объектам
(то есть товары продающиеся в нескольких магазинах, отпускаемые с нескольких складов и т.п. логические связки)
Линковка осущствеляется между основной таблицей данных и дополнительным справочником
Термины
Таблица данных : таблица которую связываем(например, список товаров)
Таблица родитель : таблица с которой связываем(например, список складов)
Таблица связи : Служебная таблица, которая хранит в себе связи
Для организации линковки необходимо:
1. В метадате Таблица данных прописать значения
$multy_field='e_id'; // поле которое является связным
$parent_table="txg_model"; // имя Таблицы родителя
$parent_name='m_name'; // поле наименования элемента с которым связываем
$parent_view="mark"; // имя "вьюхи" таблицы родителя
$parent_code='m_id'; // поле id элемента с которым связываем
2. Создать метадату селектора
Имя метадаты должно быть [вьюха таблицы родителя].selector.php
пример метадаты
$tablname='txg_model';
$keystring='m_id';
$namestring='m_name';
$deleted='m_deleted';
$selector=true;
$nametabl="Available models";
$is_add_field=true;
$cur_table_arr=array(
"field"=>array(1=>'m_id','m_name'),
"name"=>array(1=>"ID","Model name"),
"input_type"=>array(1=>'text','text'),
"val_type"=>array(1=>'int','string')
);
3.Создать таблицу связи
CREATE TABLE `c_[Таблица данных]_links` (
`e_id` int(11) NOT NULL, // - поле которое является связным в таблице данных
`parent_id` int(11) NOT NULL, // жесткое наименование
`ordering` int(5) DEFAULT '0', // жесткое наименование
PRIMARY KEY (`e_id`,`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8