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 ]);