Расширить тип поля Sitecore WFFM
Я хотел бы добавить дополнительные атрибуты к типу поля формы WFFM.
Встроенные типы полей имеют атрибуты слева от дизайнера форм
Я хотел бы добавить свой собственный раздел и атрибут для этой области. Можно ли сделать это легко, не перезаписывая существующие типы полей или не взламывая основной код?
Я на самом деле не хочу заново создавать, например, однострочное текстовое поле, просто чтобы добавить к нему свое собственное поле атрибута.
1 ответ
К сожалению, единственный способ добиться этого - создать Field Type
в коде, который реализует существующее поле, например Single Line Text
, Конфигурация для изменения отсутствует, вам нужно добавить свои атрибуты с помощью кода, а возможность взять и расширить "основной" код - это то, чем славится Sitecore.
Но добавить эти атрибуты действительно просто, и вам не нужно заново разрабатывать каждое поле, если вы просто реализуете существующие. Затем просто выберите ваш собственный однострочный текст из Type
выпадающий список и увидеть ваши новые атрибуты..
Реализация существующих Fields
даст вам все Single Line Text
работает со своими атрибутами, теперь вам нужно определить атрибуты в вашем новом class
, Сами атрибуты public properties
вашего класса украшены визуальными свойствами.
Например, я хотел, чтобы атрибут содержал ограничение размера файла FileUpload
поле, которое может быть сделано путем добавления публичного string
имущество;
public class CustomSingleLineText : SingleLineText
{
private int _fileSizeLimit;
// Make it editable
[VisualFieldType(typeof(EditField))]
// The text display next to the attribute
[VisualProperty("Max file size limit (MB) :", 5)]
// The section the attribute appers in
[VisualCategory("Appearance")]
public string FileSizeLimit
{
get
{
return this._fileSizeLimit.ToString();
}
set
{
int result;
if (!int.TryParse(value, out result))
result = 5;
this._fileSizeLimit = result;
}
}
Затем вы можете получить доступ к значению атрибута, введенному редактором контента при отправке или даже к валидатору, получив его из Parameters
из FieldItem
- FieldItem["Параметры"]
Для полного примера источника см. Этот пост;
http://jonathanrobbins.co.uk/2015/10/06/sitecore-marketplace-module-secure-file-upload/