私がやりたいのは、フォームビューに変数を保存することです。
{% form_theme edit_form _self %}
{% block field_widget %}
{% spaceless %}
{% set type = type|default('text') %}
<input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
{# MY CODE #}
{% if type == "file" %}
<a class="BOpreview" href="{# NEED TO REPLACE VAR HERE #}">Aperçu</a>
{% endif %}
{# MY ATTEMPT #}
{{ form.title.get('value') }}
{{ form.vars.value.url }}
{% endspaceless %}
{% endblock field_widget %}
私のフォームにはurl、titleなどのプロパティがあり、フィールドウィジェットブロックで使用するためにここでそれらにアクセスしようとしています。
私はそれを検索し、https: //groups.google.com/forum/?fromgroups =#!topic / symfony2/onor9uFte9Eにアクセスしました。
{{ form.title.get('value') }}
{{ form.vars.value.url }}
それは私にはうまくいきませんでした。
注:コントローラーの$ form-> createView()でvar_dumpを実行すると、次のようになります。
object(Symfony\Component\Form\FormView)[331]
private 'vars' =>
array (size=15)
'value' =>
object(Panasonic\TestEtAvisBundle\Entity\Product)[168]
protected 'reviewArray' =>
object(Doctrine\ORM\PersistentCollection)[234]
...
protected 'testArray' =>
object(Doctrine\ORM\PersistentCollection)[221]
...
protected 'fbshareArray' =>
object(Doctrine\ORM\PersistentCollection)[317]
...
private 'id' => int 2
private 'name' => string 'Nom du produit' (length=14)
private 'title' => string '<span>Titre </span>' (length=19)
private 'image' => string 'bundles/testetavis/uploads/product/0d9d9550.png' (length=47)
private 'fbImage' => string 'bundles/testetavis/uploads/product/facebook//product_e928cd96.jpg' (length=65)
private 'description' => string '<span>Descriptif </span>' (length=24)
private 'url' => string 'http://www.google.com' (length=21)
private 'creationDate' =>
object(DateTime)[210]
...
private 'modificationDate' =>
object(DateTime)[209]
...
private 'isDeleted' => int 0
'attr' =>
array (size=0)
empty
'form' =>
&object(Symfony\Component\Form\FormView)[331]
'id' => string 'panasonic_testetavisbundle_producttype' (length=38)
'name' => string 'panasonic_testetavisbundle_producttype' (length=38)
'full_name' => string 'panasonic_testetavisbundle_producttype' (length=38)
たとえば、そのURLにアクセスしたいのですが、さまざまなバリエーションを行ってもアクセスできないようです。{{value}}、{{value.url}}の使用を含みますが、varsにもかかわらず、{{full_name}}を実行してpanasonic_testetavisbundle_producttypeを取得できます。
何か案は?
Edit2:本当の問題を見つけました...
Edit3:この質問が非常に人気があるので、同じ状況で誰かを助ける場合に備えて、私が何をしようとしたかを明確にすることにしました。私の調査から述べたように、質問の内容に厳密に依存している場合、Besnikがサポートしていることは確かに正しいです。ここで私がやりたかったのは、すべての入力タイプファイルに対して、フォームのレンダリングに使用されるオブジェクトからURLを取得し、取得したURLを使用して、入力タイプファイルの横にプレビューリンクを追加することです。私のコードでこの「{{form.vars.value.url}}」のような入力タイプ「ファイル」のフォーム変数を取得しようとすると、これは機能しません。正しく思い出せば、トークンを受け取るからです。オブジェクト内に保存されているURLの代わりに。