2011-09-20 16 views
22

symfony2の各フィールドの後にヘルプメッセージを追加しようとしています。フィールドに「ヘルプ」メッセージを追加する

私は公式ドキュメントでは、約1ソリューション読みました:http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages

をしかし、我々はすべて手動でフォームを作成する必要がありましたので、このソリューションは、ほとんど意味がありません。 たとえば、ラベルを定義するのは簡単です:$formBuilder->add('myfieldname', 'text', array('label'=>'some my field label'));しかし、ヘルプメッセージを渡すには?

答えて

12

$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message'));(つまり、いくつかのカスタム変数で)しかし、それはあなたにも、すべてのフォームのデフォルトオプションとして追加拡張機能を追加する必要があると思う:
https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension
これはあなたから直接属性を編集するあなたができるようになりFormTypes。

+2

そのバンドルは、リファクタリングされたとのリンクはWORはありませんk以上。ここに行く:https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension – jmlnik

1

トピックは少し残っていますが、プロジェクトに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(); 
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', 
     )) 

私はこれがネイティブより良い解決策だと思います。別の拡張子を除いた他の方法 http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html

+0

私は答えがリンクにあると確信していますが、ドキュメントと記事からソリューションの概要を説明できますか? – Trudbert

20

A:フォームビルダークラスで

はまた、私はSymfony2のフォームでのヘルプオプションを有効にして設定する方法を示します。この偉大な記事を読むことをお勧めしますフォームテンプレートの書き換えで
$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 %} 
+2

このソリューションは、属性 'help'を入力フィールドに追加するので、理想的ではありません。それは無効なHTMLを作成します。 – pulzarraider

+1

@pulzarraiderが正しいです。代わりに 'data-help'属性を使用してください。 –

関連する問題