StandartEdit: различия между версиями

Материал из GLENN CMS WIKI
Перейти к навигации Перейти к поиску
Строка 51: Строка 51:




При сохранение данных об объекте вызываются по очереди методы текущего [[контроллер|контроллера]] и его [[модель|модели]] 'seedit<Имя объекта>'(seeditOrg) в случае если они определены.
При сохранение данных об объекте вызываются по очереди методы текущего [[контроллер|контроллера]] и его [[модель|модели]] 'seedit<Имя объекта>'(к примеру: seeditOrg) в случае если они определены.
методу модели в качестве аргумента передаётся массив с [[параметры запроса|параметрами запроса]]
методу модели в качестве аргумента передаётся массив с [[параметры запроса|параметрами запроса]]



Версия от 16:33, 9 марта 2013

StandartEdit это схема редактирования стандартных объектов.

Форма редактирования

Например создаём страницу с таблицей, содеращей определённые элементы, стандартная ситуация, не так ли?

Для редактирования каждого элемента создаём кнопку "Редактировать" и в качестве действия указываем:

onclick="seEdit(<имя объекта>,<ID объекта>,<контроллер>, <плагин>)"

Параметры:
<имя объекта>: Любое название объекта состоящее из латинских букв без пробелов пример: org
<ID объекта>: ID объекта - целое число. Также можно передать объект с несколькими параметрами пример: {'id': 2, 'parent': 4}
<контроллер>: (ОПЦИОНАЛЬНО) если передан этот параметр то метод редактирования будет вызван в переданном, контроллере
<плагин>: (ОПЦИОНАЛЬНО) если передан этот параметр то метод редактирования будет вызван в переданном, контроллере

функция JS вызовет переданный плагин, контроллер(если параметры не переданы будут вызваны текущий плагин и контроллер) с экшном seeditobject


Экшн steditobject, находящийся в CmsBaseController в свою очередь возвращает форму редактирования элемента, которую он берёт из папки

Шаблон редактирования объекта
/<ПАПКА ПЛАГИНА>/views/seedit/<имя объекта>.tpl

Перед отрисовкой формы вызывает метод segetdata<Имя объекта(первая буква большая)> сначала модели, затем контроллера, в случае если они определены При вызове метода модели, данные, возвращённые методом помещаются в массив $data, доступный в шаблоне редактирования объекта. Первым аргументом передаётся массив с параметрами, содержащий элементы запроса и переменные

object - тип объекта
objectid - его ID (второй аргумент js функции seEdit)


или принимает данные для редактирования(в случае отправки запроса методом POST).

Контроль прав

Так как при редактировании у нас вызывается один и тот же экшн то в схему внедрена дополнительная проверка прав доступа для корректной работы нам необходимо добавить ресурс, выглядящий следующим образом

Ресурс для контроля прав <текущий плагин>/<текущий контроллер>/seedit<имя объекта>


Сохранение данных

При нажатии на кнопку "Сохранить" во всплывающем окне вызывается функция seSaveData которая собирает данные с формы и отправляет POST AJAX запрос на сохранение данных.

В случае если функция обнаружит в форме input type="file" то экшн сохранения будет вызван не через AJAX, а через обычный POST так как AJAX запрос не умеет загружать файлы.

Бывают такие ситуации когда на форме есть input для загрузки файла, но форму необходимо сохранить через AJAX. В этом случае мы просто добавляем тег seIgnore="true" к input-у и его наличие будет проигнорировано.


При сохранение данных об объекте вызываются по очереди методы текущего контроллера и его модели 'seedit<Имя объекта>'(к примеру: seeditOrg) в случае если они определены. методу модели в качестве аргумента передаётся массив с параметрами запроса

Завершение

По завершении вызывается метод управляющего контроллера sefinishedit<Имя объекта>