2015-11-08 20 views
5

Chciałbym dodać dodatkowe atrybuty do typu pola formularza WFFM.Extend Sitecore WFFM typ pola

Wbudowany typów pól mają atrybuty po lewej stronie projektanta formularza enter image description here

chciałbym dodać własną sekcję i przypisują tej dziedzinie. Czy można to łatwo zrobić bez nadpisywania istniejących typów pól lub hakowania za pomocą kodu podstawowego?

ja naprawdę nie chce mieć ponownie utworzyć na przykład Pole tekstowe pojedynczego wiersza tylko po to, aby dodać do niego własne pole atrybutu.

+0

Czy korzystasz z wffm formularzy internetowych lub mvc? Jaką wersję wffm i sitecore? –

Odpowiedz

3

Niestety, sposobem na osiągnięcie tego jest utworzenie niestandardowego Field Type kodu, który implementuje istniejące pole, np. Single Line Text. Nie ma innej konfiguracji do zmiany, musisz dodać swoje atrybuty za pomocą kodu, dzięki czemu możesz zdobyć i rozszerzyć "rdzeń" kodu, z którego znany jest Sitecore.

Ale to jest bardzo proste, aby dodać te atrybuty i nie mają na przebudowę każde pole, jeśli tylko wdrażać istniejące. Następnie wystarczy wybrać swój własny pojedynczej linii tekstu z Type rozwijanej listy i zobaczyć swoje nowe atrybuty ..

wdrożenia istniejących Fields daje wszystko, co Single Line Text jest out-of-the-box z jego atrybutów, teraz trzeba zdefiniuj atrybuty w swoim nowym class. Atrybuty same w sobie są public properties twojej klasy ozdobionej wizualnymi właściwościami.

Na przykład chciałem, aby atrybut utrzymywał limit rozmiaru pliku dla pola FileUpload, który można wykonać, dodając publiczną właściwość 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; 
     } 
    } 

Następnie można uzyskać dostęp do wartości atrybutu wprowadzoną przez Edytor treści na złożenie lub nawet valiadator dostając go z Parameters z FieldItem - FieldItem [ „Parametry”]

Aby uzyskać pełną przykład źródło zobacz ten post;

http://jonathanrobbins.co.uk/2015/10/06/sitecore-marketplace-module-secure-file-upload/

+0

Nie wiem, dlaczego zostało to cofnięte. –

+0

Nie mam też pojęcia, że ​​jest to poprawna odpowiedź, która w jakiejkolwiek formie wymaga trochę kodu. +1 – jammykam