Estoy intentando que un formulario me previsualice una imagen al seleccionarla. Lo estoy haciendo siguiendo la traducción del libro oficial de gitnacho ([URL="http://gitnacho.github.io/symfony-docs-es/cookbook/form/create_form_type_extension.html#index-0"]este[/URL]). Mi problema es que cuando intento visualizar el formulario me da este error:
"Attempted to call an undefined method named "set" of class "Symfony\Component\Form\FormView".
Did you mean to call e.g. "offsetExists", "offsetGet", "offsetSet", "offsetUnset" or "setRendered"? "
En el siguiente sitio:
src/AppBundle/Form/Extension/ImageTypeExtension.php at line 52
// configura una variable "image_url" que debe estar disponible al dibujar este campo
$view->set('image_url', $imageUrl);
}
}
Me pregunto si puede ser un error del servicio. Os pongo el código:
El servicio:
Código:
La clase ImageTypeExtension, que es donde me sale el error:app_bundle.image_type_extension: class: AppBundle\Form\Extension\ImageTypeExtension tags: - { name: form.type_extension, alias: file }
Código:
y la plantilla de twig con el file-widget:<?php namespace AppBundle\Form\Extension; use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormInterface; use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class ImageTypeExtension extends AbstractTypeExtension { /** * Devuelve el nombre del tipo que será extendido. * * @return string The name of the type being extended */ public function getExtendedType() { return 'file'; } /** * Añade la opción image_path * * @param OptionsResolverInterface $resolver */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setOptional(array('image_path')); } /** * Pase la URL de la imagen a la vista * * @param FormView $view * @param FormInterface $form * @param array $options */ public function buildView(FormView $view, FormInterface $form, array $options) { if (array_key_exists('image_path', $options)) { $parentData = $form->getParent()->getData(); if (null !== $parentData) { $accessor = PropertyAccess::getPropertyAccessor(); $imageUrl = $accessor->getValue($parentData, $options['image_path']); } else { $imageUrl = null; } // configura una variable "image_url" que debe estar disponible al dibujar este campo $view->set('image_url', $imageUrl); } } } ?>
Código:
Si hace falta algo más, pedidmelo.{# src/AppBundle/Resources/views/Fotos/fields.html.twig #} {% extends 'form_div_layout.html.twig' %} {% block file_widget %} {% spaceless %} {{ block('form_widget') }} {% if image_url is not null %} <img src="{{ asset(image_url) }}"/> {% endif %} {% endspaceless %} {% endblock %}
Muchas gracias de ante mano.