Symfony -在一个窗体中添加多个窗体

Symfony - Add several forms in a form

本文关键字:窗体 添加 一个 Symfony      更新时间:2023-09-26

我正在研究Symfony,我有一个关系:Product - OneToMany - Image。我想在我的添加产品的形式,添加4图像

我知道如何使用JavaScript(通过添加动态输入模式…),但我想在我的表单中做,但我不知道如何…

下面是我的代码:

ProductType.php

class ProjectType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title', TextType::class, array('label' => 'Titre'))
            ->add('url', UrlType::class, array('label' => 'URL'))
            ->add('client', TextType::class, array('label' => 'Client'))
            ->add('description', TextType::class, array('label' => 'Description'))
            ->add('category', EntityType::class, array(
                'class' => 'AntoinePortfolioBundle:Category',
                'choice_label' => 'name',
                'multiple' => false,
                'label' => 'Catégories'))
            ->add('tags', EntityType::class, array(
                'class' => 'AntoinePortfolioBundle:Tag',
                'choice_label' => 'name',
                'multiple' => true,
                'label' => 'Tags'))
            ->add('images', CollectionType::class, array(
                'entry_type' => ImageType::class));
    }
    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Antoine'PortfolioBundle'Entity'Project'
        ));
    }
}

ImageType.php

    <?php
namespace Antoine'PortfolioBundle'Form;
use Symfony'Component'Form'Extension'Core'Type'TextType;
use Symfony'Component'Form'AbstractType;
use Symfony'Component'Form'Extension'Core'Type'FileType;
use Symfony'Component'Form'FormBuilderInterface;
use Symfony'Component'OptionsResolver'OptionsResolver;
class ImageType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class, array('label' => 'Nom'))
            ->add('alt', TextType::class, array('label' => 'alt'))
            ->add('file', FileType::class, array('label' => 'Image'));
    }
    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Antoine'PortfolioBundle'Entity'Image'
        ));
    }
}

我的人际关系很好,这不是问题。

感谢您的宝贵时间!

您可以通过使用表单事件来实现这一点。http://symfony.com/doc/current/form/events.html

我认为FormEvents::PRE_SET_DATA会成功。