向字段添加“帮助”消息

时间:2011-09-20 14:03:10

标签: symfony symfony-forms

我正在尝试在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 个答案:

答案 0 :(得分:23)

另一种没有其他扩展名的方法:

在表单构建器类中:

$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 %}

答案 1 :(得分:17)

$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message'));但它认为您还需要添加一个扩展名,将其添加为所有表单的默认选项:
https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension
这使您可以直接从FormTypes编辑属性。

答案 2 :(得分:3)

您可以按照您所描述的官方文档使用该解决方案。

但是,这项工作尚未完成。您必须根据以下文章创建表单类型扩展: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

答案 3 :(得分:2)

有点偏离主题,但如果您计划在项目中使用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();

答案 4 :(得分:2)

从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