Bezpośredni dostęp do wartości pola formularza podczas nadpisywania widgetu w szablonie gałązki

Chcę uzyskać zmienne przechowywane w widoku formularza.

{% 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 widżetów.

Szukałem go i włączyłemhttps://groups.google.com/forum/?fromgroups=#!topic/symfony2/onor9uFte9E to sugerowało:

{{ form.title.get('value') }}
{{ form.vars.value.url }}

co dla mnie nie zadziałało.

Uwaga: Jeśli zrobię var_dump na $ form-> createView () w moim kontrolerze, otrzymam:

    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ę na przykład uzyskać dostęp do tego adresu URL, ale nie mogę zrobić tego po wielu odmianach. W tym użycie {{value}}, {{value.url}} Ale pomimo vars, mogę zrobić {{full_name}} i uzyskać panasonic_testetavisbundle_producttype.

Jakieś pomysły?

Edit2: Odkryłem prawdziwy problem ...

Edit3: Widząc, że to pytanie jest dość popularne, postanowiłem wyjaśnić, co próbowałem zrobić, aby pomóc komuś w tej samej sytuacji. Jeśli polegasz wyłącznie na tym, o co pyta pytanie, jak stwierdziłem w moich badaniach i że obsługiwany Besnik jest rzeczywiście poprawny. Teraz chciałem zrobić dla każdego pliku typu wejściowego, pobrać url z obiektu używanego do renderowania formularza i dodać link podglądu, używając pobranego adresu URL, obok pliku typu wejściowego. Jeśli spróbujesz uzyskać w moim kodzie formę var typu wejściowego „plik” taki jak „{{form.vars.value.url}}”, to nie działa, ponieważ jeśli dobrze pamiętam, otrzymasz token zamiast adresu URL przechowywanego w obiekcie.

questionAnswers(5)

yourAnswerToTheQuestion