2

我已经以文档中的形式实现了帮助消息

{% extends 'form_div_layout.html.twig' %}

{% block field_widget %}
    {{ parent() }}
    {% if help is defined %}
        <span class="help">{{ help }}</span>
    {% endif %}
{% endblock %}

为了呈现帮助部分,该示例说应该在 twig 文件中定义“帮助”,如下所示:

{{ form_widget(form.title, {'help': 'foobar'}) }}

但是,我想将“帮助”定义为表单构建器中字段的选项,如下所示:

class myClassType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('title',null,array('help'=>'foobar'));
    }
}

这没有产生任何结果(“选项“帮助”不存在“)。我也试过

$builder
   ->add('title',null,array('attr'=>array(help'=>'foobar')));

它也不起作用。

有什么想法可以让这样的事情发挥作用吗?

4

3 回答 3

4

利用

$builder
->add('title',null,array('attr'=>array('help'=>'foobar'))); 

接着

{% if attr['help'] is defined %}
    <span class="help">{{ attr['help'] }}</span>
{% endif %}
于 2012-08-29T20:18:43.933 回答
2

您可以使用最终实现finishView的方法。例如,AbstractTypeFormTypeInterface

// Vendor/YourBundle/Form/Type/YourFormType

namespace Vendor\YourBundle\Form\Type;

// other use definitions
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\AbstractType;

class YourFormType extends AbstractType 
{
    // other methods.... 

    /**
     * {@inheritdoc}
     */
    public function finishView(FormView $view, FormInterface $form, array $options)
    {
        parent::finishView($view, $form, $options);
        $view['title']->vars['help'] = "Title help message";
        // same for other fields
    }
}
于 2012-08-29T20:15:40.643 回答
0

我的猜测是您不能这样做的原因是表单字段帮助文本主要是视图/模板问题。我意识到这并不能完全回答你的问题。

于 2012-08-29T19:53:09.387 回答