向字段添加“帮助”消息
Posted
技术标签:
【中文标题】向字段添加“帮助”消息【英文标题】:Adding "help" messages to fields 【发布时间】:2011-11-21 03:14:53 【问题描述】:我正在尝试在 symfony2 表单中的每个字段之后添加一些帮助信息。
我在官方文档中阅读了一种解决方案:http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages
但是这个解决方案意义不大,因为我们需要手动创建所有表单。
例如,很容易定义标签:$formBuilder->add('myfieldname', 'text', array('label'=>'some my field label'));
但是如何传递帮助消息? (也就是说,一些自定义变量)
【问题讨论】:
【参考方案1】:没有其他扩展的另一种方法:
在您的表单构建器类中:
$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 %
【讨论】:
此解决方案会将属性“帮助”添加到输入字段,因此并不理想。它会创建无效的 html。 @pulzarraider 是对的。请改用data-help
属性。【参考方案2】:
$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message'));
但它认为您还需要添加一个扩展名,将其添加为所有表单的默认选项:https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension
这使您能够直接从 FormTypes 编辑属性。
【讨论】:
该捆绑包已重构,链接不再起作用。现在去这里:github.com/simplethings/…【参考方案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
【讨论】:
我确定答案在链接中,但您能否从文档和文章中概述解决方案?【参考方案4】:从 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
【讨论】:
【参考方案5】:有点离题,但如果您打算将 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();
【讨论】:
以上是关于向字段添加“帮助”消息的主要内容,如果未能解决你的问题,请参考以下文章