Элементы формы

Сценарий (PHP-скрипт)

PHP-скрипт выполняет управление отображением «Объектов». Основные операции по отображению, «подгрузке» и преобразованию шаблоны выполняет класс родитель. Классы объектов, которые создаются непосредственно в «Конфигураторе», наследуются от него, и мы можем переопределить методы, для изменения стандартной работы класса.

31

Основными методы, используемыми в PHP-скрипте:

  • onPlay
  • onChange
  • beforeChange
  • onSave
  • onSaved
  • onDelete
  • onDeleted
  • responseChange

Подробное описание методов:

Метод onPlay – метод, который выполняется последним из всех, выводит шаблон в браузер, в этом методе удобно выполнять большинство операций. Чтобы вывести что-либо в шаблоне, рекомендуется использовать именно этот метод.

Метод onChange — метод, возникающий, если сущность должна изменится, в данном случае она изменяется не в базе данных, а лишь как php – сущность. Выполняется до того, как выполнится какие-либо изменения.

Метод beforeChange – метод, возникающий, если сущность изменилась. Более подробно смотрите метод выше. onChange и beforeChange — парные методы, один выполняется до изменения, другой — после изменения сущности.

Метод onSave — метод, возникающий, если сущность собираются сохранить в БД (Базе данных).
Пример: Присвоить полю owener значение до записи Объекта в базу данных

1
$this->structure->owner = $this->parents[0][0]->getKey(); // конструкция используется для записи значений таб. частей

Метод onSaved — метод, возникающий после сохранения сущности в БД.

Метод onDelete – метод, возникающий перед удалением сущности. В данном случае удаляется не полностью, у объекта меняется поле visible (1 ->0, пометка на удаление).

Метод onDeleted – метод, возникающий после удаления сущности.

Метод responseChange – удобный метод, чтобы вернуть данные AJAX запросу в удобном XML формате. Блокирует выполнение onPlay.

Шаблон

Шаблон представляет собой обычную HTML разметку, в которую включены шаблоны заменяемые на HTML разметку. Содержимое шаблона находиться в файлах tpl. Чтобы применить какой либо шаблон, необходимо подключить его в шапке документа.

Примеры:

1
2
#include <fields> // шаблон полей
#include <table> // шаблон таблиц

3

JS-скрипт

Js скрипт подключается в шапке документа. Просим учитывать это при написании скриптов. В основном в системе используется плагин jQuery. Подробнее о его использовании читайте www.jquery.com

Для каждой формы можно создать отдельный JS-код. Путь к JS совпадает с названием формы и пути к шаблону.

33

Созданный скрипт необходимо подгрузить в шаблоне. Для этого, добавьте к блоку JS (append) ссылку на скрипт. Можно использовать шаблон [[js]], получающий единственный параметр name — имя скрипта.

1
2
3
4
5
{JS append}
 
  [[js | name: path/to/scenario/edit]]
 
{/JS}

При разработке вы можете использовать готовые методы для выполнения тривиальных задач (отображения модального окна, загрузки AJAX-формы и т.п.)

Вы также всегда можете использовать все возможности библиотеки jQuery.
Ниже описаны основные библиотеки и методы для их использования. jQuery-методы обозначаются через $.{METHOD}.

Отправка формы через AJAX — interface/ajax_form

Подключение

1
[[js | name: interface/ajax_form]]

Методы

1
 $.ajaxForm(onSuccess(data) = null, onError(type, error, data) = null)

Превращает форму, переданную в jQuery-селекторе, в Ajax-форму. В качестве аргументов можно передать анонимные функции-обработчики, вызываемые по успешному выполнению запроса (onSuccess) или ошибки (onError).
Оба параметра опциональны.

onSuccess(data) — Функция, вызываемая при успешном проведении операции. Принимает на вход данные, возвращенные сервером, уже подготовленные для применения jQuery-методов.

onError(data) — Функция, вызываемая при неуспехе операции. Принимает на вход тип возникшей ошибки, текст, а также все прочие данные, которые решит вернуть сервер.

Пример:

1
2
3
4
5
6
7
8
9
$("#addCompanyForm").ajaxForm(function(data) {
 
  alert("Добавлен контрагент с id " + data.find("id").text());
 
}, function(type, error, data) {
 
  alert("Ошибка " + type + ": " + error);
 
});

Работа с модальными окнами — interface/modal_form

Подключение

1
  [[js | name: interface/modal_form]]

Методы

1
showFormModal(url, args = {}, method = "get")

Отображает форму в модальном окне. В случае если переданы аргументы, передает параметры или, для метода «post», имитирует отправку формы.

url — строка с адресом вызываемой формы.
args — объект с дополнительными параметрами
method — метод: get (по умолчанию) или post.

1
2
3
4
5
6
showFormModal("/companies/select/"); //Отобразить форму выбора контрагента
 
 
//Изменить имя контрагента
 
showFormModal("/companies/edit/1/", {"save": true, "name": "Company"}, "post");

Скрывает текущее модальное окно:

1
hideModal()

Внимание! Применяя функции jQuery начинающиеся с «$.» , например $.post или $.get в шаблоне, а не подключаемом js скрипте, измените «$.» на «jQuery.». Это связано с обработкой шаблона tpl парсером и заменой соответствующих переменных php, начинающихся на «$», на реальные значения.

Работа с динамическими таблицами — interface/table

Подключение
Подключается автоматически при добавлении шаблона table_dynamic.

Методы

1
 TABLE $.table()

Превращает выбранную таблицу в динамическую. Возвращает объект-таблицу, имеющую следующие методы:

1
 TABLE.addRow(id, content, tags)

Добавляет строку с переданными данными в таблицу.
id — ID строки.
content — объект с содержимым ряда. Ключи являются названиями полей таблицы, а знчения — содержимым этих полей.
tags — двумерный объект, содержащий атрибуты полей (внутри тега td).

1
 TABLE.editRow(id, content)

Редактирует строку с указанным id.
id — ID строки.
content — объект с содержимым ряда.

1
 TABLE.delRow(id)

Удаляет строку с указанным id из таблицы.
id — ID строки.

1
 TABLE.renumerate()

Пересчитывает поле авто заполнения num.

1
 TABLE.setEmptyText(text)

Устанавливает значение текста, отображаемого при отсутствии полей в таблице. В случае если текст не задан, сообщение не отображается.

text — Строка с текстом.

Языковой файл (массив)

В языковом файле хранятся ассоциации языковых переменных.
35
Ниже пример оформления кода для языкового файла:

1
2
3
4
5
6
7
<!--?php 
$_ = [
"AddPos" = "Добавление товара в счет №",
"EditPos" = "Редактирование товара из счета №",
"NoStorehouse" = "(склад не выбран)", 
"NoDispatchedEdit" = "Нельзя редактировать уже отгруженный товар."];
 ?-->

В «Шаблоне» чтобы вывести переменную из «языкового файла» нужно прописать:

1
#L:AddPos

На форме появится текст: «Добавление товара в счет №»

Последние правки: 14.08.2016 18:59:14