User Tools

Site Tools


api:form

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
api:form [2012/06/19 16:13]
celutp removed
— (current)
Line 1: Line 1:
-====== Методы для обработки форм ====== 
- 
-Функции форм предназначены для создания или изменения статей контента посредством HTML-форм,​ но могут также использоваться для чисто программной модификации содержимого контентов. ​ 
- 
-===== Общие ===== 
- 
-==== FieldName ==== 
- 
-<code c#>​string FieldName(string content_name,​ string field_name)</​code>​ 
-Возвращает внутреннее имя поля (''​field_<​id поля>''​). Обычно используется в HTML-формах для наименования полей совместно с методами [[#​AddFormToContent]] или [[#​UpdateContentItem]]. Поддерживает [[:​development:​container#​выбор_источника|динамическое изменение контента]]. 
- 
-==== FieldID ==== 
- 
-<code c#>int FieldID(string content_name,​ string field_name)</​code>​ 
-Возвращает идентификатор поля. 
- 
-===== Добавление ===== 
- 
-==== AddFormToContent ==== 
- 
-Метод используется для создания новых статей:​ 
- 
-<code c#>int AddFormToContent(string content_name,​ string status_name)</​code>​ 
- 
-и обновления существующих:​ 
- 
-<code c#>int AddFormToContent(string content_name,​ string status_name,​ int content_item_id)</​code> ​ 
- 
-Необходимо передать:​ 
- 
-  * Имя контента (поддерживается [[:​development:​container#​выбор_источника|динамическое изменение контента]]) 
-  * Имя статуса (обычно -- "​Published"​) 
-  * ID статьи (при обновлении) 
-  ​ 
-Перед вызовом AddFormToContent значения полей статьи должны находиться в коллекции [[development:​values|Values]],​ данные в которую могут попасть либо автоматически при отправке на сервер HTML-формы (имена полей формы должны формироваться с помощью функции [[#​FieldName]]),​ либо вручную,​ с помощью функции [[api:​values#​addvalue|AddValue]] (ключи также должны быть созданы с помощью [[#​FieldName]]). 
- 
-Возвращает ID созданной/​обновленной статьи. Также этот ID записывается в коллекцию [[development:​values|Values]] c ключом ''​new_content_item_id''​. 
- 
-Если в веб-форме есть поля ввода типа file с корректными именами (имена полей должны формироваться с помощью функции [[#​FieldName]]),​ то соответствующие файлы будут сохранены в [[:​content:​library|библиотеку контента]]. Если файл с таким именем уже существует,​ то файл будет сохранен под измененным именем с числовым индексом,​ например ''​image[1].jpg''​. Также при необходимости будут сгенерированы динамические изображения. 
- 
-AddFormToContent поддерживает добавление/​обновление полей Many-To-Many (вызывает внутри себя [[#​AddUpdateContentItemLink]]). Значение поля должно представлять собой строку идентификаторов связанных статей,​ разделенных запятыми (результат функции [[api:​contents#​GetContentItemLinkIds]]). ​ 
- 
-AddFormToContent инициирует отправку уведомлений. Если это поведение нежелательно,​ можно использовать [[#​AddFormToContentWithoutNotification]]. 
- 
-Нельзя обновлять виртуальные контенты - генерируется исключение. ​ 
- 
-Обновление идет сразу в несколько таблиц единой транзакцией. 
- 
-В соответствии с настройками полей производятся следующие проверки:​ 
-    * На тип поля c точки зрения БД (NVARCHAR, NUMERIC, DATETIME) 
-    * На обязательность поля 
-    * На допустимую длину и маску ввода (поле String) 
-    * Проверка на уникальность не поддерживается 
- 
-Пример:​ 
-<code c#>​AddValue(FieldName("​Users",​ "​Login"​),​ Login); 
-AddValue(FieldName("​Users",​ "​Password"​),​ Password); 
-AddFormToContent("​Users", ​ "​Published"​);</​code>​ 
- 
- 
-==== AddFormToContentWithoutNotification ==== 
-<code c#>int AddFormToContentWithoutNotification(string content_name,​ string status_name)</​code>​ 
-<code c#>int AddFormToContentWithoutNotification(string content_name,​ string status_name,​ int content_item_id)</​code>​ 
- 
-Методы работают аналогично [[#​AddFormToContent]],​ но без посылки уведомлений. 
- 
-===== Обновление ===== 
- 
-==== UpdateContentItem ​ ==== 
-<code c#>void UpdateContentItem()</​code>​ 
-Работает подобно [[#​AddFormToContent]] с параметром content_item_id,​ но в данном случае ID статьи передается через коллекцию Values (ключ content_item_id). Имя контента вычисляется по ID статьи. Если в коллекции [[Values]] будут присутствовать не все поля, то значения обнулятся. Если же это поведение нежелательно,​ то нужно использовать перегруженную версию с параметром ''​updateEmpty = false''​. 
- 
-UpdateContentItem инициирует отправку уведомлений. Если это поведение нежелательно,​ можно использовать [[#​UpdateContentItemWithoutNotification]]. ​ 
- 
-<code c#>void UpdateContentItem(bool updateEmpty,​ string statusName)</​code> ​ 
- 
-Эта перегруженная версия метода позволяет обновлять статус статьи (если статус менять не нужно, то передайте в метод пустую строку),​ а также обновлять только несколько полей статьи с помощью параметра ''​updateEmpty = false''​ (данный вариант предпочтительнее,​ чем несколько вызовов [[#​UpdateContentItemField]]). 
- 
- 
-Пример:​ 
-<code c#>​AddValue("​content_item_id",​ 12345); 
-AddValue(FieldName("​Users",​ "​Login"​),​ Login); 
-AddValue(FieldName("​Users",​ "​Password"​),​ Password); 
-UpdateContentItem();</​code>​ 
- 
-==== UpdateContentItemWithoutNotification ==== 
- 
-<code c#>void UpdateContentItemWithoutNotification()</​code> ​ 
-Работает подобно [[#​UpdateContentItem]],​ но без посылки уведомлений. 
- 
- 
- 
-==== UpdateContentItemField ==== 
- 
-<code c#>void UpdateContentItemField(string content_name,​ string field_name, int content_item_id) </​code>​ 
-Метод работает аналогично [[#​AddFormToContent]] c параметром content_item_id,​ но он предназначен для обновления только одного поля статьи. Если необходимо обновление сразу нескольких полей, лучше воспользоваться методом [[#​UpdateContentItem]] с параметром ''​UpdateEmpty = false''​. По умолчанию метод не инициирует отправку уведомлений. Если это поведение надо изменить,​ можно воспользоваться перегруженной версией:​ 
- 
-<code c#>void UpdateContentItemField(string content_name,​ string field_name, int content_item_id,​ bool with_notification)</​code>​ 
- 
-Пример:​ 
-<code c#>​AddValue(FieldName("​Users",​ "​Login"​),​ "​newLogin"​);​ 
-UpdateContentItemField("​Users",​ "​Login",​ Value("​cid"​));</​code>​ 
- 
- 
- 
-==== AddUpdateContentItemLink ==== 
- 
-<code c#>int AddUpdateContentItemLink(string LinkFieldName,​ int ItemID, string LinkItems, string TargetLinkItems)</​code>​ 
-Добавляет или обновляет заданное поле связи типа M2M (параметр LinkFieldName) для заданной статьи (параметр ItemID). Возвращает 1 в случае удачного завершения,​ -1 -- при неудачном. Значение поля передается в параметре LinkItems. Оно представляет собой строку идентификаторов связанных статей,​ разделенных запятыми. Параметр TargetLinkItems позволяет ограничить набор обновляемых идентификаторов. Формат этого параметра такой же, как и у параметра LinkItems. Если обновление затрагивает все идентификаторы,​ то в качестве параметра TargetLinkItems нужно передать пустую строку. 
- 
-Пример:​ 
-<code c#>​AddUpdateContentItemLink("​Books",​ NumValue("​AuthorID"​),​ Value("​12345,​45678,​7890,​ 23415, 8907"​),​ ""​);</​code>​ 
- 
-===== Удаление ===== 
- 
-==== RemoveContentItem ​ ==== 
- 
-<code c#>void RemoveContentItem(int content_item_id)</​code> ​ 
- 
-Удаляет статью по заданному идентификатору. Метод поддерживает уведомления. 
- 
-==== DeleteContentItem ==== 
- 
-<code c#>void DeleteContentItem()</​code> ​ 
-Удаляет статью по заданному идентификатору,​ который передается через коллекцию [[Values]] (ключ content_item_id). Метод поддерживает уведомления. 
- 
- 
- 
- 
-