Symfony2:如何通过某个属性过滤实体选择表单字段的选项?
1.)情况(简化)
我有两个实体:一个Container-entity,它只有一个Content-entity. content_id存储在Container-entity中. 2.)软删除内容实体 我实现了一个软删除内容实体的功能,所以我在Content-entity中添加了一个“已删除”的属性.一切正常. 3.)问题 现在,当我想创建一个新的Container实体时,自动生成的选项显示所有内容实体 – 甚至是那些我“标记为已删除”的实体(delete-attribute = 1). 4.)问题 添加“过滤器”/“查询”的正确位置在哪里才能显示未标记为已删除的元素? (删除!= 1) 5.)我尝试过的 a.)view / twig方法:我尝试修改{{form_widget(form.contentId)}}的呈现但没有成功 b.)控制器方法:我试图在创建表单的newAction中操作表单数据($form = $this-> createCreateForm($entity))但没有成功 c.)type / buildForm方法:我试图改变buildForm() – 方法……再次,没有成功 如果你能给我一个提示和/或一个简短的代码示例,我可以在哪里勾选到删除软删除选项的动作. 非常感谢你提前! 解决方法
您正在寻找实体字段的
query_builder 选项.
您可以创建一个自定义查询来过滤结果集. 例: $builder->add('users','entity',array( 'class' => 'AcmeHelloBundle:User','query_builder' => function(EntityRepository $repository) { $qb = $repository->createQueryBuilder('u'); // the function returns a QueryBuilder object return $qb // find all users where 'deleted' is NOT '1' ->where($qb->expr()->neq('u.deleted','?1')) ->setParameter('1','1') ->orderBy('u.username','ASC') ; },)); 您可以采用更通用的方法,使用doctrine filters过滤所有选择语句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |