Co chcę zrobić, to uzyskać zmienne przechowywane w widoku formularza.Bezpośredni dostęp do wartości pola formularza podczas zastępowania widgetu w szablonie gałązki
{% 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 %}
Mój formularz ma właściwości takie jak adres URL, tytuł itp. I próbuję uzyskać do nich dostęp, aby użyć go w bloku widgetu pola.
Szukałem go i wszedł na https://groups.google.com/forum/?fromgroups=#!topic/symfony2/onor9uFte9E że sugerowana:
{{ form.title.get('value') }}
{{ form.vars.value.url }}
który nie działa dla mnie.
Uwaga: Jeśli mam zrobić var_dump na $ form-> createView() w moim kontrolera, otrzymuję:
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)
Chcę uzyskać dostęp do tego adresu URL, na przykład, ale nie wydaje się być w stanie zrób to po wielu odmianach. W tym użycie {{value}}, {{value.url}} Ale oprócz vars, mogę zrobić {{full_name}} i uzyskać panasonic_testetavisbundle_producttype.
Wszelkie pomysły?
Edit2: dowiedziałem się prawdziwy problem ...
Edit3: Widząc, że to pytanie jest dość popularny postanowiłem wyjaśnić, co próbowałem zrobić w przypadku, gdy ktoś pomaga w ten sam sytuacja. Jeśli polegacie wyłącznie na tym, o co pyta pytanie, jak stwierdziłem w moich badaniach i że wsparcie Besnika jest rzeczywiście poprawne. Teraz chciałem zrobić dla każdego pliku typu wejściowego, uzyskać adres URL z obiektu używanego do renderowania formularza i dołączyć łącze podglądu, używając pobranego adresu URL, obok pliku typu wejściowego. Jeśli spróbujesz uzyskać w formularzu var formularz typu "plik", taki jak ten "{{form.vars.value.url}}", to nie działa, ponieważ, jeśli dobrze pamiętam, otrzymasz token zamiast adresu URL przechowywanego wewnątrz obiektu.
Jeśli spojrzysz na zrzut, adres URL jest własnością prywatną. Czy masz na to zyski? (a funkcja getValue()) –
Zmodyfikowalem moje pytanie tak, aby było bardziej szczegółowe. Chociaż {{form.vars.value.title}} działa doskonale w formie, nie pokazuje niczego wewnątrz bloku widgetu, który przesłoniłem. Próbuję uzyskać wartości formularza wewnątrz przesłoniętego bloku. Zobacz {% block field_widget%} w kodzie. Jakieś pomysły? – Rishi
@Besnik Mam problem z użyciem 'dump' na form.vars.value. Wiem, że dump jest włączony, ponieważ mogę go użyć gdzie indziej. Jakieś pomysły? –