Показывать изображения после загрузки с помощью коллекции форм Symfony 2

Я хотел бы отображать изображения из коллекции формы в моем представлении, но это приводит к сбою моего скрипта.

На мой взгляд, у меня есть три поля (2 текста и 1 файл), которые я могу дублировать сколько угодно благодаря прототипу формы.

Когда я сообщаю 3 поля, 2 текста и файл хорошо принимаются во внимание. Файл находится на сервере и вставлен в базу данных.

Когда я хочу отобразить поля в моем представлении, скрипт вылетает из-за изображения. Когда я заполняю только два текста и хочу отобразить свои поля в своей форме, все отображается правильно.

Итак, беспокойство исходит от изображения.

Не могли бы вы помочь мне найти решение?

Вот код:

Форма

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
    ->add('pictoDesign', 'choice', array(
        'choices' => array(
            'empty'         => 'Rien',
            'round'         => 'round',
            'bubble'        => 'bulle',
        ),
        'attr' => array(
            'class' => 'form-control'
        ),
        'label' => 'Forme du fond du picto',
        'mapped' => false
    ))
    ->add('pictoSize', 'text', array(
        'attr' => array(
            'class' => 'form-control'
        ),
        'label' => 'Taille du picto',
        'mapped' => false,
        'required' => false
    ))
    ->add('pictoColor', 'text', array(
        'attr' => array(
            'class' => 'colorpicker'
        ),
        'label' => 'Couleur du picto',
        'mapped' => false,
        'required' => false
    ))
    ->add('textSize', 'text', array(
        'attr' => array(
            'class' => 'form-control'
        ),
        'label' => 'Taille du texte',
        'mapped' => false,
        'required' => false
    ))
    ->add('textColor', 'text', array(
        'attr' => array(
            'class' => 'colorpicker'
        ),
        'label' => 'Couleur du texte',
        'mapped' => false,
        'required' => false
    ))
    ->add('backgroundColor', 'text', array(
        'attr' => array(
            'class' => 'colorpicker'
        ),
        'label' => 'Couleur de fond',
        'mapped' => false,
        'required' => false
    ))
    ->add('sources', 'collection', array(
        'type' => new SourcesCollectionType(),
        'allow_add' => true,
        'by_reference' => false,
        'allow_delete' => true,
        'prototype' => true,
        'required' => false,
        'mapped' => false
    ))
    ;

    $builder->addEventListener(FormEvents::POST_SET_DATA, array($this, 'onPostSetData'));

}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'OuibeatAppBundle:Storyboard',
    ));
}

public function onPostSetData(FormEvent $event) {

    $form = $event->getForm();
    $settings = $event->getData();

    if ($settings) {
        foreach ((array)$settings as $name => $value) {
            if ($name != "backgroundImagePath") {
                $form->get($name)->setData($value);
            }
        }
    }

}


public function getName()
{
    return 'counterSW';
}

SourcesCollectionType

    public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
    ->add('socialMedia', 'choice', array(
        'choices' => array(
            'facebook' => 'facebook',
            'twitter' => 'twitter',
            'instagram' => 'instagram'
        ),
        'label' => "Sélectionner une source",
        'multiple' => false,
        'expanded' => true
    ))
    ->add('idSource', 'text', array(
        'attr' => array(
            'class' => 'form-control'
        ),
        'label' => 'ID des sources',
        'required' => true
    ))
    ->add('backgroundColorSW', 'text', array(
        'attr' => array(
            'class' => 'colopicker'
        ),
        'label' => 'Couleur de fond de la source',
        'required' => false
    ))
    ->add('backgroundImageSW', 'file', array(
        'label' => 'Image de fond de la source',
        'required' => false
    ))
    ;


    $builder->addEventListener(FormEvents::POST_SET_DATA, array($this, 'onPostSetData'));
}

public function getName()
{
    return 'source_collection_type';
}

public function onPostSetData( FormEvent $event ) {


}

Вид

            <div class = "col-md-12">
            <div id = "sourcesSW" class = "collection-block form-group" data-prototype = "{{ form_widget(formSettings.sources.vars.prototype)|e }}">
                {% for content in formSettings.sources %}

                        {{ form_widget(content) }}

                {% endfor %}
            </div>

            <button type = "button" id = "add-another-background-color" class = "btn btn-default add-another-item">{% trans %}Ajouter une nouvelle source{% endtrans %}</button>

Спасибо за помощь

Вы получаете сообщения об ошибках?

mblaettermann 12.10.2018 10:52
stackoverflow.com/questions/52551103/…
Themer 12.10.2018 11:43

Я нашел ошибку, и теперь она решена: stackoverflow.com/questions/40983353/…

WikeC 12.10.2018 13:56
JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
0
3
27
0

Другие вопросы по теме