4

フォームを作成するのはSymfony2とCreateFormBuilderです。

現在{{ form_widget(form) }}、フォームの表示に使用しています。私のエンティティにpathは、ファイルシステムに保存された画像のパスであるプロパティがあります。画像を(htmlタグ付きの)フォームで表示したいのですが<img>、どうすればこの結果を得ることができますか?テンプレートのフォームをフィールドごとに処理する必要がありますか?または、テンプレート内の1つのフィールドのみを所有し、他のフィールドをでレンダリングする方法はあります{{ form_widget(form) }}か?

4

1 に答える 1

7

あなたができることは、フィールドごとにフォームを処理し、値が設定されている場合は画像を表示することです。

フィールド名があるとしましょうimage。Twigでは、を介してその値にアクセスできますform.vars.value.image。次に、imgタグを表示するのは非常に簡単です。

{% if form.vars.value.image is not null %}
    <img src="{{ asset('upload/dir/' ~ form.vars.value.image) }}" />
{% endif %}

ここに、upload/dir/画像を保存するパスがあります。このパスの定数がある場合は、Twigで使用できます。

{{ asset(constant('Acme\\DemoBundle\\Model\\Object::UPLOAD_DIR') ~ '/' ~ form.vars.value.image) }}

別の方法として、独自のテンプレートを使用して独自のタイプを作成することもできます。

編集:私は興味深い代替案を忘れました。個々のフィールドをカスタマイズできます:http ://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual-field 。これがあなたができることの草案です:

{% form_theme form _self %}

{% block _object_image_row %}
    <div class="name_row">
        {{ form_label(form) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}

        {% if form.vars.value.image is not null %}
            <img src="{{ asset('upload/dir/' ~ form.vars.value.image) }}" />
        {% endif %}
    </div>
{% endblock %}
于 2012-08-21T16:17:30.103 に答える