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 に答える