2011-09-20 14 views
22

Sto tentando di aggiungere alcuni messaggi di aiuto dopo ogni campo nel modulo in symfony2.Aggiunta di messaggi di "aiuto" ai campi

Ho letto di una soluzione in documentazione ufficiale: http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages

Ma questa soluzione ha poco senso, perché abbiamo bisogno di creare tutte le forme manualmente. Ad esempio, è facile definire l'etichetta: $formBuilder->add('myfieldname', 'text', array('label'=>'some my field label')); Ma come passare i messaggi di aiuto? (In altre parole, alcune variabili personalizzate)

risposta

12

$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message')); Ma si pensa anche bisogno di aggiungere un'estensione che aggiunge questo come un'opzione di default per tutte le forme:
https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension
Questo rende in grado di modificare gli attributi direttamente da voi FormTypes.

+2

quel fascio è stata riscritta e il link non wOR k più. Vai qui ora: https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension – jmlnik

1

Un po 'fuori tema ma comunque utile se si prevede di utilizzare Bootstrap per il proprio progetto, è possibile usufruire di alcuni moduli di aiuto forniti dal pacchetto Mopa Bootstrap.

Demo: http://bootstrap.mohrenweiserpartner.de/mopa/bootstrap/forms/help_texts

GitHub: https://github.com/phiamo/MopaBootstrapBundle

Esempio:

<?php 

$form = $this->get('form.factory') 
     ->createNamedBuilder('form_name') 
     ->setMethod('POST') 
     ->add('testSelect', 'choice', [ 
      'choices' => ['val1' => 'Value 1', 'val2' => 'Value 2'], 
      'required' => true, 
      'help_block' => 'Here some help text!!!' 
     ]) 
     ->add('Save', 'submit') 
     ->getForm(); 

return $form->createView(); 
3

È possibile utilizzare la soluzione nella documentazione ufficiale, come hai descritto.

Ma il lavoro non è ancora completo. È necessario creare un Extention tipo di modulo, sulla base di questo articolo: http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html

Dopo aver completato la creazione di moduli tipo Estensione è possibile aggiungere Aiuto messaggi come questo:

$form = $this->createFormBuilder() 
      ->add('name', 'text', array(
       'help' => 'this is a help message to user', 
     )) 

Penso che questa sia una soluzione nativa migliore. Inoltre, vi consiglio letto questo grande articolo che mostra come abilitare e impostare l'opzione di aiuto in forme Symfony2: http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html

+0

Sono sicuro che la risposta è nei link ma potresti delineare la soluzione dalla documentazione e dall'articolo? – Trudbert

20

Un altro metodo, senza un altro interno:

Nel modulo di classe costruttore:

$builder->add('yourField',null, array('attr'=>array('help'=>'text help'))) 

Nel modello di modulo riscrittura:

{% block form_row %} 
    {% spaceless %} 
      {{ form_label(form) }} 
       {{ form_widget(form) }} 
       {% for attrname, attrvalue in attr %} 
        {% if attrname == 'help' %} 
         <span class="help-block">{{ attrvalue }}</span> 
        {% endif %} 
       {% endfor %} 
      {{ form_errors(form) }} 
    {% endspaceless %} 
{% endblock form_row %} 
+2

Questa soluzione aggiungerà l'attributo 'help' al campo di input quindi non è l'ideale. Crea un html non valido. – pulzarraider

+1

@pulzarraider ha ragione. Usa invece l'attributo 'data-help'. –

Problemi correlati