我正在尝试在symfony2中的每个字段之后添加一些帮助消息。
我已阅读官方文档中的一个解决方案:http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages
但是这个解决方案毫无意义,因为我们需要手动创建所有表单。
例如,很容易定义标签:$formBuilder->add('myfieldname', 'text', array('label'=>'some my field label'));
但是如何传递帮助消息? (换句话说,一些自定义变量)
答案 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',
]);