3

こんにちは、私は Symfony が初めてで、次の問題があります。

レート フォームを実装しているので、ラジオ ボタン グループを追加して、1 から 5 の値を選択します。アイデアは、従来のラジオ ボタンの代わりに 5 つの星を表示することなので、各入力フィールドにクラスを追加する必要があります。

問題は、symfony がクラスを各入力ではなく、hole ラジオ グループに追加することです。

私は解決策を探しましたが、見つけた最も近いヒントは次のとおりです。

{% block choice_widget_expanded %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
        {% for child in form %}
            {{ form_widget(child, {'attr': {'class': 'rating-input'}}) }}
        {% endfor %}
    </div>
{% endspaceless %}
{% endblock choice_widget_expanded %}

上記のコードは、「rating-input」クラスの div でラジオ グループもラップします。

これは、コントローラーのテスト フォーム コードです。

$form->createFormBuilder()
     ->add('rate', 'choice', array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5), 'expanded' => true, 'multiple' => false))
     ->add('save', 'submit')
     ->getForm();

取得した html のサンプル画像を次に ここに画像の説明を入力 示します。前もって感謝します。

4

3 に答える 3

6

これが私がやったことです。フォームのテーマを使用して、各入力の表示方法をオーバーライドしました。これを行うには、「form_theme form self」タグを追加し、フォームがレンダリングされる小枝の Choice_widget ブロックをオーバーライドする必要があります。

{% extends ::base.html.twig %}

{% form_theme form _self %}

{% block choice_widget_expanded %}
    <div {{ block('widget_container_attributes') }}>
        {% for child in form %}
            {{ form_widget(child, {'attr': 'star'}) }}
            {{ form_label(child) }}
        {% endfor %}
    </div>
{% endblock %}

とにかく答えてくれてありがとう。

于 2013-10-31T18:30:58.710 に答える