Добавление «справочных» сообщений в поля - PullRequest
26 голосов
/ 20 сентября 2011

Я пытаюсь добавить несколько справочных сообщений после каждого поля в форме в symfony2.

Я прочитал об одном решении в официальных документах: http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages

Но это решение мало что даетсмысл, потому что нам нужно создать всю форму вручную.Например, легко определить метку: $formBuilder->add('myfieldname', 'text', array('label'=>'some my field label')); Но как передать справочные сообщения?(Другими словами, некоторые пользовательские переменные)

Ответы [ 5 ]

23 голосов
/ 22 августа 2014

Еще один метод без другого расширения:

В вашем классе конструктора форм:

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

В шаблоне формы переписать:

{% 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 %}
17 голосов
/ 20 сентября 2011

$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message')); Но кажется, что вам также нужно добавить расширение, которое добавляет это как параметр по умолчанию для всех форм:https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextensionЭто позволяет вам редактировать атрибуты непосредственно из ваших FormTypes.

3 голосов
/ 14 августа 2014

Вы можете использовать решение в официальных документах, как вы описали.

Но работа еще не завершена. Вы должны создать расширение типа формы на основе этой статьи: http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html

После завершения создания расширения типа формы вы можете добавить справочные сообщения, например:

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

Я думаю, что это нативное лучшее решение. Кроме того, я рекомендую прочитать эту замечательную статью, в которой показано, как включить и настроить параметр справки в формах symfony2: http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html

2 голосов
/ 20 июня 2018

Начиная с Symfony 4.1 вы можете делать:

$builder->add('email', null, [
    'help' => 'Make sure to add a valid email',
]);

https://symfony.com/blog/new-in-symfony-4-1-form-field-help

2 голосов
/ 20 мая 2014

Немного не по теме, но все же полезно, если вы планируете использовать Bootstrap для своего проекта, тогда вы можете воспользоваться некоторыми помощниками по форме, предоставляемыми Mopa Bootstrap Bundle.

Демо: http://bootstrap.mohrenweiserpartner.de/mopa/bootstrap/forms/help_texts

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

Пример:

<?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();
...