User Tools

Site Tools


api:qpage:form

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

Методы обработки форм классов 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. Также при необходимости будут сгенерированы динамические изображения.

Поддерживается полноценная работа с расщепленными статьями, включая Many-To-Many и Many-To-One поля. Значения таких полей должны представлять собой строку идентификаторов связанных статей, разделенных запятыми.

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

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

  • Тип поля (числовой, дата)
  • Обязательность
  • Уникальность
  • Допустимая длина и маска ввода (поле типа String)

Кроме того:

  • При обновлении статьи создается ее версия.
  • Вся работа с БД происходит в одной транзакции.

Реализовано с помощью метода AddFormToContent класса DBConnector.

Пример

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).

Реализовано с помощью метода UpdateContentItem класса DBConnector.

Пример

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)

Реализовано с помощью метода UpdateContentItemField класса DBConnector.

Пример

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 класса DBConnector.

DeleteContentItem

public void DeleteContentItem()

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

Discussion

Enter your comment
 
api/qpage/form.txt · Last modified: 2012/06/20 15:56 by celutp