向字段添加“帮助”消息

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-&gt;add('myFieldName', 'text', array('help' =&gt; '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();

【讨论】:

以上是关于向字段添加“帮助”消息的主要内容,如果未能解决你的问题,请参考以下文章

Inno Setup:添加自定义输入字段

向 Ubercart 发票添加自定义字段

mysql添加多个字段&删除多个字段

Azure(PowerShell)如何向多个现有的网络安全组(源地址前缀字段)添加额外的 IP?

mybatis-向sql中添加判断条件

mybatis-向sql中添加判断条件