Symfony 2 フォームを使用して、ブログを匿名ユーザーとして投稿するか匿名ではない (ユーザー名を表示する) かを選択するためのラジオ ボタンを使用して拡張選択リストを作成しています。
BlogType.php ファイルのフォーム フィールド タイプの定義は次のようになります (コントローラーからの値で選択肢を渡していますが、私の質問とは関係がないはずです)。
$builder->add('is_anonymous', 'choice', array(
'choices' => $options['is_anonymous'],
'required' => true,
'multiple' => false,
'expanded' => true,
));
テンプレート小枝ファイルで次のようにして、Symfony2クックブックの「個々のフィールドをカスタマイズする方法」セクションを適用しようとしました:
<div class="post_as">
{{ form_label(form.is_anonymous, 'Post as:') }}
{{ form_errors(form.is_anonymous) }}
{% form_theme form _self %}
{% block _factor_is_anonymous_0_label %}
<img src="/images/anonymous-32.png"/>
{{ block ('form_label') }}
{% endblock %}
{% block _factor_is_anonymous_1_label %}
<img src="/images/user-32.png"/>
{{ block ('form_label') }}
{% endblock %}
{{ form_widget(form.is_anonymous) }}
</div>
ただし、上記の結果は、結果の html に見られるように、対応するラジオ ボタンの横にそれぞれが表示されることに加えて、選択リストの前に両方の画像が表示されます。
<div class="post_as">
<label class="required">Post as:</label>
<img src="/images/anonymous-32.png"/>
<img src="/images/user-32.png"/>
<div id="factor_is_anonymous">
<input type="radio" id="factor_is_anonymous_0" name="factor[is_anonymous]" required="required" value="true" />
<img src="/images/anonymous-32.png"/>
<label for="factor_is_anonymous_0" class="required">Anonymous Collaborator</label>
<input type="radio" id="factor_is_anonymous_1" name="factor[is_anonymous]" required="required" value="false" />
<img src="/images/user-32.png"/>
<label for="factor_is_anonymous_1" class="required">User Name</label>
</div>
</div>
画像が 2 回表示されないようにするにはどうすればよいですか? これは、全体的な選択肢「行」のレンダリングと、2 つの選択肢のそれぞれのレンダリングに表示される画像に関係していると思います。ラベル全体を表示するためにさまざまな組み合わせを試しましたが、問題を解決できませんでした...誰か助けてくれますか? ありがとう...