2011-09-20 21 views
22

estoy tratando de añadir algunos mensajes de ayuda después de cada campo en forma de Symfony2.Adición de mensajes de "ayudar" a los campos

que he leído sobre una solución en la documentación oficial: http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages

Pero esta solución no tiene mucho sentido, porque hemos necesitamos crear toda forma manual. Por ejemplo, es fácil definir la etiqueta: $formBuilder->add('myfieldname', 'text', array('label'=>'some my field label')); ¿Pero cómo pasar mensajes de ayuda? (En otras palabras, algunas variables personalizadas)

Respuesta

12

$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message')); Pero se piensa también que añadir una extensión que añadir esto como una opción por defecto para todas las formas:
https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension
Esto le hace capaz de editar los atributos directamente de usted FormTypes.

+2

Ese paquete fue rediseñado y el enlace no Trab k más. Vaya aquí ahora: https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension – jmlnik

1

Un poco fuera de tema, pero sigue siendo útil si usted está planeando utilizar Bootstrap para su proyecto, entonces puede tomar ventaja de algunos ayudantes formulario proporcionado por el paquete Mopa Bootstrap.

Demostración: http://bootstrap.mohrenweiserpartner.de/mopa/bootstrap/forms/help_texts

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

Ejemplo:

<?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

Usted puede utilizar la solución en los documentos oficiales como usted describió.

embargo, el trabajo todavía no está completo. Hay que crear una Extensión tipo de formulario, en base a este artículo: http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html

Después de completar la creación del tipo de formulario Extensión puede agregar mensajes de ayuda en este aspecto:

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

Creo que esta es una solución nativa mejor. Además, recomiendo leer este gran artículo que muestra cómo activar y configurar la opción de ayuda en formas de Symfony2: http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html

+0

Estoy seguro de que la respuesta está en los enlaces, pero se puede esbozar la solución de la documentación y el artículo? – Trudbert

20

Un otro método sin otra extensión:

En su clase de constructor de formulario:

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

En la plantilla de formulario de reescritura:

{% 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

Esta solución agregará atributo 'help' al campo de entrada por lo que no es ideal. Crea html no válido. – pulzarraider

+1

@pulzarraider tiene razón. Use el atributo 'data-help' en su lugar. –

Cuestiones relacionadas