Как получить доступ к экземпляру сущности в подчиненной форме? - PullRequest
0 голосов
/ 07 мая 2019

Резюме

Я хочу получить доступ к экземпляру объекта (Media) внутри формы, связанной с объектом "Media", который связан с формой, связанной с объектом "Project". Как я могу получить доступ к этому экземпляру сущности?

Что я пробовал

Я уже обнаружил в сети, что некоторые люди говорили об обратном вызове события, как это:

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($builder) {
    /** @var YourEntity $data */
    $data = $event->getData();
});

Но это интересно только тогда, когда мы нажали кнопку «Добавить». Я хочу, чтобы моя сущность на первом отображении страницы показывала мое изображение, чтобы пользователь мог его видеть и редактировать, если он этого хочет.

После этого пользователь может добавлять другие изображения, но это другое дело.

Я также обнаружил, что некоторые люди говорят, что для параметра allow_add указано значение false, но это не решает мою проблему.

код

Вот мои две формы. Форма Project:

class Project extends AbstractForm
{
    use ArticleForm;
    use StatusForm;

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('medias', CollectionType::class, [
                'entry_type' => Media::class,
                'entry_options' => ['label' => false],
                'allow_add' => true,
                'allow_delete' => true
            ])
            ->add(
                'teaser',
                TextareaType::class,
                [
                    'label' => 'label.teaser',
                ]
            )
            ->add(
                'public',
                CheckboxType::class,
                [
                    'label' => 'label.public',
                ]
            );

        $this->builderAddTitleAndBody($builder);
        $this->builderAddStatus($builder, $options['data']);
        $this->builderAddSave($builder);
    }

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

И форма Media:

class Media extends AbstractForm
{
    use EntityForm;

    public $formName = 'media';

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(
                'file',
                FileType::class,
                [
                    'data'     => $this->entityFileInit($builder->getData(), 'file'),
                    'label' => 'label.picture',
                    'required' => false,
                    'mapped' => false,
                    'data_class' => null
                ]
            )
            ->add(
                'alt',
                TextType::class,
                [
                    'label' => 'label.alt',
                    'mapped' => false
                ]
            );
    }

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

Ожидаемые и фактические результаты

Я хочу, чтобы Symfony пришел хотя бы к шаблону, но Symfony говорит мне, что $ builder-> getData () возвращает 'null'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...