根据要求以表格形式选择列表
Choicelist in form based on request
我构建了一个带有选择列表/实体的表单类型。我将在此选择字段中仅加载指定的实体,这取决于请求中的参数。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('children', 'entity', array(
'class' => 'AppMyBundle:Items',
'choices' => array(), // <------ This i fill dynamic, based on request parameter
'label' => '',
'translation_domain' => 'messages',
'multiple' => true,
'expanded' => false,
'attr' => array('class' => 'childrens'))
);
}
我可以访问表单类型的请求吗?或者我该如何处理这个问题?
更新
我有以下实体。一个有很多部分和有很多问题的部分的问卷。
- 部门调查问卷:OneToMany
- 问题部分:OneToMany
一个问题实体有一个一对多的自反射。
问题:
/**
* @ORM\OneToMany(targetEntity="Question", mappedBy="parent")
**/
private $children;
/**
* @ORM\ManyToOne(targetEntity="Question", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
**/
private $parent;
如果用户点击编辑问卷,我会列出该问卷中的所有问题。在第一步中,我获取所有部分,然后我收集该部分的所有问题并显示指定问卷的列表视图。
知道如果用户点击编辑指定问卷的问题,我将只显示此指定问卷中的子元素。
那是我的问题:)
您可以在 $options
中注入 Request
public function buildForm(FormBuilderInterface $builder, array $options)
,
然后通过以下方式访问:$request = $options['req']
;
注入如下:
$taskForm = $this->createForm(new TaskType(), $task, array(
'req' => $this->getRequest(),
));
并在 :
中添加要求
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver
->setDefaults(array(
'data_class' => 'Acme\TaskBundle\Entity\Task',
))
->setRequired(array('req'))
->setAllowedTypes('req', 'Symfony\Component\HttpFoundation\Request')
// ...
}
我构建了一个带有选择列表/实体的表单类型。我将在此选择字段中仅加载指定的实体,这取决于请求中的参数。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('children', 'entity', array(
'class' => 'AppMyBundle:Items',
'choices' => array(), // <------ This i fill dynamic, based on request parameter
'label' => '',
'translation_domain' => 'messages',
'multiple' => true,
'expanded' => false,
'attr' => array('class' => 'childrens'))
);
}
我可以访问表单类型的请求吗?或者我该如何处理这个问题?
更新
我有以下实体。一个有很多部分和有很多问题的部分的问卷。
- 部门调查问卷:OneToMany
- 问题部分:OneToMany
一个问题实体有一个一对多的自反射。
问题:
/**
* @ORM\OneToMany(targetEntity="Question", mappedBy="parent")
**/
private $children;
/**
* @ORM\ManyToOne(targetEntity="Question", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
**/
private $parent;
如果用户点击编辑问卷,我会列出该问卷中的所有问题。在第一步中,我获取所有部分,然后我收集该部分的所有问题并显示指定问卷的列表视图。
知道如果用户点击编辑指定问卷的问题,我将只显示此指定问卷中的子元素。
那是我的问题:)
您可以在 $options
中注入 Request
public function buildForm(FormBuilderInterface $builder, array $options)
,
然后通过以下方式访问:$request = $options['req']
;
注入如下:
$taskForm = $this->createForm(new TaskType(), $task, array(
'req' => $this->getRequest(),
));
并在 :
中添加要求public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver
->setDefaults(array(
'data_class' => 'Acme\TaskBundle\Entity\Task',
))
->setRequired(array('req'))
->setAllowedTypes('req', 'Symfony\Component\HttpFoundation\Request')
// ...
}