Php Symfony-筛选集合类型为实体的表单

Php Symfony-筛选集合类型为实体的表单,php,symfony,symfony4,symfony-forms,Php,Symfony,Symfony4,Symfony Forms,我有两个实体,client和order 我有一个管理界面,在那里我可以显示客户端的所有订单,在那里我可以修改或删除每个订单 为此,我使用集合类型: 我的控制器: $form = $this->createForm(ClientConfigType::class, $client); 这是我的客户端配置类型: <?php namespace App\Form; use App\Entity\Client; use Symfony\Component\Form\Extension\

我有两个实体,
client
order

我有一个管理界面,在那里我可以显示客户端的所有订单,在那里我可以修改或删除每个订单

为此,我使用集合类型:

我的控制器:

$form = $this->createForm(ClientConfigType::class, $client);
这是我的客户端配置类型:

<?php

namespace App\Form;

use App\Entity\Client;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ClientConfigType extends AbstractMainType {
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add("orders",
            CollectionType::class,
            [
                'entry_type' => OrderConfigType::class,
                'allow_add' => true,
                'label' => false
            ]);
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver) {
        $resolver->setDefaults(array(
            'data_class' => Client::class,
            'allow_extra_fields' => true,
        ));
    }
}
然后,在我的ConfigType中,我可以在configureOptions函数中检索我的变量,但是,我无法使用该值筛选我的集合类型


如何筛选我的collectionType?

而不是传递
分钟价格
您可以像查询订单一样进行查询,并将订单的集合传递给表单

示例如下:

class ClientConfigType extends AbstractMainType {
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add("orders",
            CollectionType::class,
            [
                'entry_type' => OrderConfigType::class,
                'allow_add' => true,
                'label' => false,
                'data' => $options['orderCollection']
            ]);
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver) {
        $resolver->setDefaults(array(
            'data_class' => Client::class,
            'orderCollection' => null,
        ));
    }
}
也许这篇文章可以帮助你
class ClientConfigType extends AbstractMainType {
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add("orders",
            CollectionType::class,
            [
                'entry_type' => OrderConfigType::class,
                'allow_add' => true,
                'label' => false,
                'data' => $options['orderCollection']
            ]);
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver) {
        $resolver->setDefaults(array(
            'data_class' => Client::class,
            'orderCollection' => null,
        ));
    }
}
$orderCollection = $em->getRepository(Order::class)->findAll(); //something like this or custom query it s an example
$form = $this->createForm(ClientConfigType::class, $client, ['orderCollection' => $orderCollection ]);