namespace ui; use ui\form\structure\eInputType; use ui\input\Avatar_Picker; use ui\input\Cancel; use ui\input\Checkbox; use ui\input\Color_Picker; use ui\input\DATE_RANGE_TIME; use ui\input\DATE_Time; use ui\input\Hidden; use ui\input\Html; use ui\input\Image; use ui\input\Input; use ui\input\Radio; use ui\input\Script; use ui\input\Select; use ui\input\Select_Ajax; use ui\input\Select_Multi; use ui\input\Select_Search; use ui\input\Switch_Ios; use ui\input\Text; use ui\input\Date; use ui\input\Submit; use ui\input\Email; use ui\input\Textarea; use ui\input\Video; use ui\input\Yandex_Country_City; class Form { const VALUES = 1; // Значения для полей ввода - общая настройка формы const INPUTS = 2; // Поля ввода - общая настройка формы const INPUT = 3; // Поле ввода, поднастрйока INPUTS const KEY_VALUE = 4; // Ключ из массва VALUES для подстановки значения, поднастройка INPUTS const TYPE = 5; // Тип конкретного поля ввода, поднастройка INPUTS const LABEL = 6; // Label для поля вода, поднастройка INPUTS const VIEW = 7; // Тип отображения настройки, поднастрйока INPUTS const INPUT_OPT = 8; // Настройки для поля ввода, поднстройка INPUTS const ON_SUBMIT = 9; // джействие для формы const ROW = 10; // Нужно для отображение полей в вода в виде строки const ROW_CLASSES = 11; // Дополнительные классы для строки в форме const COL_CLASSES = 12; // Классы столбца в строке const COLS = 13; // Массив столбцов для отображения внутри строки const CONTROLLER = 14; // Контроллер к которому должна отправлять форма данные const ACTION = 15; // Действие, которое должен выполнить контроллер const COL_CLASSES_ALL_FORCE = 16; // Жёстко задать класс всем столбцам (это понадобилось для того, чтобы отобразить все поля ввода по одному на строку) const TITLE = 17; // Заголовок разделитель const TITLE_TEXT = 18; // Текст заголовка const BUTTONS = 19; // Тип отображения const BUTTON = 20; // Тип отображения const INPUT_ALL_THEME_FORCE = 21; // Жёсткое указание темы для всех полей ввода const FORM_WRAP = 22; // нужно ли оборачивать форму в тег form const RULES = 23; // Правила полей ввода var $values = []; var $inputs = []; var $options = []; function __construct(array $options = []){ $this->values = isset($options[$c = self::VALUES]) ? $options[$c] : []; $this->inputs = isset($options[$c = self::INPUTS]) ? $options[$c] : []; $this->options = $options; return $this; } function toJSON(){ return [ 'values' => $this->values, 'inputs' => $this->inputs, //'options' => $this->options, ]; } protected function toString($a){ $res = ''; foreach ($a as $k=>$v){ switch ($v[Form::VIEW]){ // Если это строка, то начинаем рекурсивно выводить колонки case Form::TITLE: $res.='