我正在重写一个旧的应用程序到Symfony2,我有点卡住了。该应用程序有TaskType
和TagsType
。 TaskType
表单具有TagType
的集合。一些标签可能被归档(即Tag#archived=true
)。如果是这种情况,当您尝试编辑任务时,不应在表单中显示存档标签。如何过滤Symfony2中的表单集合?
class TaskType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add(
'tags',
'collection',
array(
'type' => new TagType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
)
)
;
}
// ...
}
class TagType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
;
}
// ...
}
有没有办法来过滤与具有一个entity
代替collection
在使用query_builder
标签?是否有任何解决方法?
为什么不使用query_builder direclty到TagType中,传递Task id(可选参数?)。我不确定我是否理解这个问题corretty顺便说一句。 – DonCallisto 2014-10-10 07:07:50
你可以显示'TagType'吗? – frumious 2014-10-10 07:08:00
@DonCallisto这很简单 - 使用上面的设置,在窗体中可以看到所有标签。我想排除集合中的一些标记(即'SELECT * FROM tags WHERE archived = false',而不是'SELECT * FROM tags')。你能发表一个你的想法的例子吗? – tftd 2014-10-10 10:17:09