Passer une variable buildView à une vue
Bonjour,
Je souhaite pouvoir afficher le chemin et la photo d'un article quand j'édite ce dernier. Je me suis donc inspiré de la doc symfony "Form Type Extension" https://symfony.com/doc/3.4/form/cre...extension.html
Ce que je fais
J'ai un form ArticlesType (lié a l'entité article) qui utilise la classe MediaType::class pour definir le formulaire Mediatype.php specifique aux photos
//dans ArticlesType.php
-
Code:
>add('image', MediaType::class)
//dans Mediatype.php
Code:
1 2 3 4
| ->add('image', FileType::class, array('data_class' => null,
'required' => false,
'label' => 'Illustration de l\'article',
'image_property' => 'AssetPath') |
image_property' => 'AssetPath' me permet de "lier" mon formulaire media à ImageTypeExtension où je fais un buildView afin de retrouver l'URL des photos
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public function buildView(FormView $view, FormInterface $form, array $options)
{
// this will be whatever class/entity is bound to the form (e.g. Media)
$parentData = $form->getParent()->getData();
$imageUrl = null;
if (null !== $parentData) {
$accessor = PropertyAccess::createPropertyAccessor();
$imageUrl = $accessor->getValue($parentData, 'AssetPath');
//dump($imageUrl);
die(var_dump($imageUrl));
}
// sets an "image_url" variable that will be available when rendering this field
$view->vars['image_url'] = $imageUrl; |
Ce que je veux
$imageUrl renvoie bien l'URL, mais du fait de l'imbrication de Mediatype dans ArticlesType, $view->vars['image_url'] n'envoie pas cette variable à la vue.
Ce que j'obtiens
dans la vue,
Code:
1 2 3 4
|
{% if image_url is not null %}
<img src="{{ asset(image_url) }}"/>
{% endif %} |
renvoie une erreur puisque twig ne trouve pas image_url.
Comment faire passer $imageUrl à la vue ?