我有一个棘手的问题。我使用Symfony3.2和上一版本。
我有一个名为'Meeting'的实体,有3个字段:
我每个类别每天都可以举行多次会议。
第一步: 我需要将类别传递给我的表单,仅显示一个类别的会议。
第二步: 当我显示表单时,我需要提供2个输入:
对于我的第一个问题,我已经阅读了很多关于这个主题的文章,但是当我尝试时,它就失败了。 我试图在控制器上发出请求并在表单中传递选择列表。 我试图在表单上传递类别,并在实体字段中使用query-builder选项... 我没有更多的想法来完成这个。
对于我的第二个问题,我继续搜索一个好主意^^我读了一些关于官方文档的提示: http://symfony.com/doc/current/form/dynamic_form_modification.html#form-events-submitted-data
出于这个原因,我需要在表单类型中管理表单。不在控制器中。
感谢您的帮助和提示;)
对不起,我没有发布我的代码,因为我做了很多测试。我发布了我的最后一个例子:
控制器:
$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
->add('date', EntityType::class, array(
'class' => 'MeetingBundle:Meeting', 'choice_label' => 'date',
'multiple' => false, 'expanded' => false, 'label' => 'label.meeting',
'query_builder' => function (MeetingRepository $cr) use ($category) {
return $cr->getMeetingByCategory($category);
}
))
->add('hour', EntityType::class, array(
'class' => 'MeetingBundle:Meeting', 'choice_label' => 'hour',
'multiple' => false, 'expanded' => false, 'label' => 'label.hour',
'query_builder' => function (MeetingRepository $cr) use ($category) {
return $cr->getMeetingByCategory($category);
}
))
->getForm();
存储库:
public function getMeetingByCategory(Category $category)
{
$qb = $this->createQueryBuilder('meeting');
$now = new \DateTime('now');
$qb->where($qb->expr()->gte('meeting.date', ':date'))
->andWhere($qb->expr()->eq('meeting.category', ':category'))
->setParameters(array(
'date' => $now->format('Y-m-d'),
'category' => $category,
));
return $qb;
}
当我尝试将表单放在SpecialMeetingType文件中时,我在表单中传递参数有很多问题,然后在闭包中。