Я хотел бы отображать изображения из коллекции формы в моем представлении, но это приводит к сбою моего скрипта.
На мой взгляд, у меня есть три поля (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>
Спасибо за помощь
Я нашел ошибку, и теперь она решена: stackoverflow.com/questions/40983353/…




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