У меня есть форма Symfony для добавления продуктов в сущность Products. В этой форме у меня есть поле VichImageType для загрузки изображения продукта. Это все работает нормально, но когда я иду, чтобы обновить продукт, используя то же самое для поля VichImageType не заполнено, хотя само изображение присутствует и метка удаления.
Я надеялся, что кто-то может мне помочьзаполнить это поле автоматически, чтобы пользователю не приходилось добавлять изображение каждый раз при обновлении продукта.
Код моей формы выглядит следующим образом:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('type', EntityType::class, array (
'placeholder' => 'Select One...',
'class' => 'App\Entity\Type',
'attr' => [
'class' => 'select-css',
],
))
->add('addTypes', TypeType::class, [
'mapped' => false,
'label' => 'Add types',
'required' => false,
'attr' => [
'class' => 'addon',
],
'label_attr' => [
'class' => 'addon_label',
],
])
->add('manufacturer', EntityType::class, array (
'placeholder' => 'Select one...',
'class' => 'App\Entity\Manufacturer',
'attr' => [
'class' => 'select-css',
],
))
->add('addManufacturers', ManufacturerType::class, [
'mapped' => false,
'required' => false,
'label' => 'Add manufacturers',
'attr' => [
'class' => 'addon',
],
'label_attr' => [
'class' => 'addon_label',
],
])
->add('colours', EntityType::class, [
'class' => 'App\Entity\Colours',
'multiple' => true,
'expanded' => true,
])
->add('addColours', ColoursType::class, [
'mapped' => false,
'label' => 'Add colours',
'required' => false,
'attr' => [
'class' => 'addon',
],
'label_attr' => [
'class' => 'addon_label',
],
])
->add('description', CKEditorType::class, array(
'config_name' => 'new_config',
))
->add('MainImageFile', VichImageType::class)
->add('weight')
->add('needle_size')
->add('materials', TextType::class, [
'label' => 'Composition',
'required' => false,
])
->add('tension')
->add('stock')
->add('RRP', MoneyType::class, array(
'label' => 'RRP',
'divisor' => 1,
'currency' => 'gbp',
))
->add('Price', MoneyType::class, array(
'divisor' => 1,
'currency' => 'gbp',
))
->add('display', CheckboxType::class, array(
'label' => 'Display product?',
'required' => false,
))
->add('Save', SubmitType::class, [
'attr' => [
'class' => 'button',
]
])
;
}
это из функции в моем контроллере:
public function edit($id, Request $request) {
$this->data = $this->em
->getRepository(Products::class)
->findOneBy(['id' => $id]);
if (!$this->data) {
throw $this->createNotFoundException(
'No product found for id: '.$id
);
}
$this->title = "Edit Product: ".$this->data->__toString();
$form = $this->createForm(ProductsType::class, $this->data);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
foreach($form['colours']->getData() as $colour)
$this->data->addColour($colour);
$this->em
->flush();
return $this->redirectToRoute('products_view');
}
return $this->render("form_view/index.html.twig", [
'form' => $form->createView(),
'title' => $this->title,
]);
}