Изменения

Модуль editgeneric (Sway)

1848 байтов добавлено, 21:02, 20 августа 2009
Нет описания правки
* Проверка доступа ('''check_access''')
: Наиболее очевидная вещь: имеет ли право текущий пользователь редактировать то, что он хочет редактировать?
* Извлечение и проверка данных из параметров запроса ('''check_data''')
: Проверка корректности ввода: например, не занят ли логин при регистрации, корректно ли введён e-mail адрес и т. п.
* Извлечение данных из базы данных приложения / откуда угодно ('''fetch''')
: А этого этапа может не существовать вообще в компонентах создания новых объектов (но не редактирования сущестующих).
* Объединение данных из базы и изменений, вытащенных check_data ('''merge''')
: Идея в том, что нужна возможность попасть на интерфейс редактирования какого-то объекта, но чтобы в форму уже были внесены некоторые изменения.
* Дополнение и вывод объединённых данных в шаблон ('''template''')
: Например, преобразование времени в человеко-читаемый формат и т. п.
* Выполнение изменений ('''save''')
: Например, выполнение запроса обновления к БД.
: Здесь можно реализовать универсальную модерацию — «запрос на правку» ($data) сериализуется, сохраняется в таблицу, потом модератор проверяет и принимает либо отклоняет.
: Кстати, функция после отработки и сама может отдавать редирект куда-нибудь, например, на страницу с результатами редактирования. По умолчанию же, если save вернёт ИСТИНУ и не выведет ничего в \%rv, будет редирект на исходный URL редактирования.
Общий порядок параметров всех хуков: (\%param, \%rv, $data, $olddata). Все аргументы передаются хукам merge и template, первые 3 — хуку save, остальным только первые 2.