@entermix

Почему не работает форма обновления сущности?

Symfony 4.0

Сущность:
https://pastebin.com/V7amJQED

Форма:
<?php

namespace App\Form\Dashboard\Book;

use App\Entity\Book;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class BookEditType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('cover', FileType::class)
            ->add('slug', TextType::class)
            ->add('name', TextType::class)
            ->add('description', TextareaType::class)
            ->add('plot', TextareaType::class)
            ->add('published_at', DateType::class, [
                'years' => range(date('Y') - 25, date('Y')),
            ])
            ->add('save', SubmitType::class);
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Book::class,
        ]);
    }
}


При попытке перейти по адресу, где размещена форма:

The form's view data is expected to be an instance of class Symfony\Component\HttpFoundation\File\File, but is a(n) string. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) string to an instance of Symfony\Component\HttpFoundation\File\File.


Если попробовать так:

$resolver->setDefaults([
            'data_class' => null,
        ]);


Появляется другая ошибка:

Cannot read index "cover" from object of type "App\Entity\Book" because it doesn't implement \ArrayAccess.


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

Аналогичная форма добавления сущности: https://pastebin.com/0MptL1H4

Здесь все ок, что я делаю не так?
  • Вопрос задан
  • 1052 просмотра
Решения вопроса 1
voronkovich
@voronkovich
Там имеется ввиду выставить data_class, для поля cover. Посмотрите сюда: https://github.com/symfony/symfony/blob/833909bd68...

Видите, там data_class выставляется в Symfony\Component\HttpFoundation\File\File

Попробуйте так:
->add('cover', FileType::class, [ 'data_class' => null ])


UPD: И вообще вы неправильно загрузку делаете. См. здесь https://symfony.com/doc/current/controller/upload_...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы