Lo que quiero hacer es obtener variables almacenadas en la vista de formulario.Acceda directamente al valor de un campo de formulario al reemplazar el widget en una plantilla twig
{% 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 %}
Mi forma tiene propiedades como URL, título, etc., y estoy tratando de acceder a ellos aquí para utilizarlo en el bloque aparato de campo.
me buscó y se encendieron https://groups.google.com/forum/?fromgroups=#!topic/symfony2/onor9uFte9E que sugería:
{{ form.title.get('value') }}
{{ form.vars.value.url }}
que no funcionó para mí.
Nota: Si hago un var_dump en $ form-> createView() en mi controlador, me sale:
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)
Quiero tener acceso a esa URL, por ejemplo, pero parece que no puede ser capaz de hazlo después de muchas variaciones. Incluyendo el uso de {{value}}, {{value.url}} Pero a pesar de vars, puedo hacer {{full_name}} y obtener panasonic_testetavisbundle_producttype.
¿Alguna idea?
Edit2: descubrí el verdadero problema ...
Edit3: Viendo que esta pregunta es bastante popular decidí aclarar en lo que he tratado de hacer en caso de que ayuda a alguien de la misma situación. Si confía estrictamente en lo que hace la pregunta, como indiqué de mi investigación y que Besnik apoyó son de hecho correctos. Ahora, lo que quería hacer es para cada archivo de tipo de entrada, obtener URL del objeto utilizado para representar el formulario y anexar un enlace de vista previa, usando la URL recuperada, junto al archivo de tipo de entrada. Si intentas obtener el formulario var de un tipo de entrada "archivo" como este "{{form.vars.value.url}}" en mi código, esto no funciona, ya que, si recuerdo correctamente, recibes un token en lugar de la url almacenada dentro del objeto.
Si mira el vertedero, la url es una propiedad privada. ¿Tienes un getter para eso? (una función getValue()) –
He editado mi pregunta para que sea más específica. Si bien {{form.vars.value.title}} funciona perfectamente en el formulario, no muestra nada dentro de un bloque de widgets que he anulado. Estoy tratando de obtener los valores de forma dentro del bloque reemplazado. Ver {% block field_widget%} en el código. ¿Algunas ideas? – Rishi
@Besnik Tengo problemas para usar 'dump' en form.vars.value. Sé que el volcado está habilitado porque puedo usarlo en otro lado. ¿Algunas ideas? –