2015-11-08 10 views
5

Vorrei aggiungere ulteriori attributi a un tipo di campo modulo WFFM.Estendi tipo di campo WFFM Sitecore

Il costruito nel tipi di campo hanno gli attributi a sinistra del form designer enter image description here

vorrei aggiungere la mia sezione e attribuire a questo settore. Questo può essere fatto facilmente senza sovrascrivere i tipi di campo esistenti o l'hacking con il codice principale?

Non voglio davvero dover ricreare il codice ad es. Campo Testo a riga singola solo per aggiungere il mio campo di attributo ad esso.

+0

Stai usando wffm webforms o MVC? Quale versione di wffm e sitecore? –

risposta

3

Sfortunatamente il solo modo per raggiungerlo è creando un codice personalizzato Field Type nel codice che implementa un campo esistente, ad es. Single Line Text. Non c'è altra configurazione dove cambiare, devi aggiungere i tuoi attributi tramite codice, essere in grado di prendere ed estendere il codice 'core' è ciò che è noto per Sitecore.

Ma è molto semplice aggiungere questi attributi e non è necessario sviluppare di nuovo tutti i campi se si implementano solo quelli esistenti. Quindi è sufficiente selezionare la vostra abitudine Linea Testo dal Type discesa e vedere i nuovi attributi ..

Attuazione del vigente Fields vi darà tutto il Single Line Text fa out-of-the-box con i suoi attributi, ora è necessario definire gli attributi nel tuo nuovo class. Gli attributi stessi sono public properties della classe decorati con proprietà visive.

Ad esempio, volevo un attributo per contenere il limite di dimensione del file di un campo FileUpload, che può essere fatto aggiungendo una proprietà pubblica 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; 
     } 
    } 

È quindi possibile accedere al valore di attributo immesso l'Editor contenuti sulla presentazione o anche il valiadator ottenendo dal Parameters delle FieldItem - FieldItem [ "Parametri"]

Per un esempio completo fonte vedi questo post;

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

+0

Non so perché questo è stato downvoted. –

+0

Nessuna idea neanche, è la risposta corretta, che in qualsiasi momento richiede una certa codifica. +1 – jammykam