User Tools

Site Tools


api:qpage:form

This is an old revision of the document!


Методы для обработки форм

Методы обработки форм классов QPage и QUserControl предназначены для создания или изменения статей контента посредством HTML-форм, но могут также использоваться для программной модификации содержимого контентов.

AddFormToContent

Метод используется для создания новых статей:

public int AddFormToContent(string content_name, string status_name)

и обновления существующих:

public int AddFormToContent(string content_name, string status_name, int content_item_id)

Необходимо передать:

Перед вызовом AddFormToContent значения полей статьи должны находиться в коллекции Values, данные в которую могут попасть либо автоматически при отправке на сервер HTML-формы (имена полей формы должны формироваться с помощью функции FieldName), либо вручную, с помощью функции AddValue (ключи также должны быть созданы с помощью FieldName).

Возвращает ID созданной/обновленной статьи. Также этот ID записывается в коллекцию Values c ключом new_content_item_id.

Если в веб-форме есть поля ввода типа file с корректными именами (имена полей должны формироваться с помощью функции FieldName), то соответствующие файлы будут сохранены в библиотеку контента. Если файл с таким именем уже существует, то файл будет сохранен под измененным именем с числовым индексом, например image[1].jpg. Также при необходимости будут сгенерированы динамические изображения.

AddFormToContent поддерживает добавление/обновление полей Many-To-Many (вызывает внутри себя AddUpdateContentItemLink). Значение поля должно представлять собой строку идентификаторов связанных статей, разделенных запятыми (результат функции GetContentItemLinkIds).

AddFormToContent инициирует отправку уведомлений. Если это поведение нежелательно, можно использовать AddFormToContentWithoutNotification.

Нельзя обновлять виртуальные контенты - генерируется исключение.

Обновление идет сразу в несколько таблиц единой транзакцией.

В соответствии с настройками полей производятся следующие проверки:

  • На тип поля c точки зрения БД (NVARCHAR, NUMERIC, DATETIME)
  • На обязательность поля
  • На допустимую длину и маску ввода (поле String)
  • Проверка на уникальность не поддерживается

Пример:

AddValue(FieldName("Users", "Login"), Login);
AddValue(FieldName("Users", "Password"), Password);
AddFormToContent("Users",  "Published");

AddFormToContentWithoutNotification

public int AddFormToContentWithoutNotification(string content_name, string status_name)
public int AddFormToContentWithoutNotification(string content_name, string status_name, int content_item_id)

Методы работают аналогично AddFormToContent, но без посылки уведомлений.

UpdateContentItem

public void UpdateContentItem()

Работает подобно AddFormToContent с параметром content_item_id, но в данном случае ID статьи передается через коллекцию Values(ключ content_item_id). Имя контента вычисляется по ID статьи. Если в коллекции Values будут присутствовать не все поля, то значения обнулятся. Если же это поведение нежелательно, то нужно использовать перегруженную версию с параметром updateEmpty = false.

UpdateContentItem инициирует отправку уведомлений. Если это поведение нежелательно, можно использовать UpdateContentItemWithoutNotification.

public void UpdateContentItem(bool updateEmpty, string statusName)

Эта перегруженная версия метода позволяет обновлять статус статьи (если статус менять не нужно, то передайте в метод пустую строку), а также обновлять только несколько полей статьи с помощью параметра updateEmpty = false (данный вариант предпочтительнее, чем несколько вызовов UpdateContentItemField).

Пример:

AddValue("content_item_id", 12345);
AddValue(FieldName("Users", "Login"), Login);
AddValue(FieldName("Users", "Password"), Password);
UpdateContentItem();

UpdateContentItemWithoutNotification

public void UpdateContentItemWithoutNotification()

Работает подобно UpdateContentItem, но без посылки уведомлений.

UpdateContentItemField

public void UpdateContentItemField(string content_name, string field_name, int content_item_id) 

Метод работает аналогично AddFormToContent c параметром content_item_id, но он предназначен для обновления только одного поля статьи. Если необходимо обновление сразу нескольких полей, лучше воспользоваться методом UpdateContentItem с параметром UpdateEmpty = false. По умолчанию метод не инициирует отправку уведомлений. Если это поведение надо изменить, можно воспользоваться перегруженной версией:

public void UpdateContentItemField(string content_name, string field_name, int content_item_id, bool with_notification)

Пример:

AddValue(FieldName("Users", "Login"), "newLogin");
UpdateContentItemField("Users", "Login", Value("cid"));
public int AddUpdateContentItemLink(string LinkFieldName, int ItemID, string LinkItems, string TargetLinkItems)

Добавляет или обновляет заданное поле связи типа M2M (параметр LinkFieldName) для заданной статьи (параметр ItemID). Возвращает 1 в случае удачного завершения, -1 – при неудачном. Значение поля передается в параметре LinkItems. Оно представляет собой строку идентификаторов связанных статей, разделенных запятыми. Параметр TargetLinkItems позволяет ограничить набор обновляемых идентификаторов. Формат этого параметра такой же, как и у параметра LinkItems. Если обновление затрагивает все идентификаторы, то в качестве параметра TargetLinkItems нужно передать пустую строку.

Пример:

AddUpdateContentItemLink("Books", NumValue("AuthorID"), Value("12345,45678,7890, 23415, 8907"), "");

RemoveContentItem

public void RemoveContentItem(int content_item_id)

Удаляет статью по заданному идентификатору. Метод поддерживает уведомления.

DeleteContentItem

public void DeleteContentItem()

Удаляет статью по заданному идентификатору, который передается через коллекцию Values (ключ content_item_id). Метод поддерживает уведомления.

Discussion

Enter your comment
 
api/qpage/form.1340116105.txt.gz · Last modified: 2012/06/19 17:28 by celutp