Php Sonata管理包-带有URL的自定义字段

Php Sonata管理包-带有URL的自定义字段,php,symfony,sonata-admin,Php,Symfony,Sonata Admin,有没有办法通过过滤器将url显示到另一个实体列表,而不是显示所有相关实体 我的实体有一个对其事件的任何引用: /** * * @ORM\OneToMany(targetEntity="Event", mappedBy="organizer", cascade={"ALL"}) */ private $events; $formMapper->add('events')显示select2输入和所有事件 我只想向当前所有者显示一个带有筛选器的事件列表链接 我正在使用Symfony 2.5。是

有没有办法通过过滤器将url显示到另一个实体列表,而不是显示所有相关实体

我的实体有一个对其事件的任何引用:

/**
 *
 * @ORM\OneToMany(targetEntity="Event", mappedBy="organizer", cascade={"ALL"})
 */
private $events;
$formMapper->add('events')显示select2输入和所有事件

我只想向当前所有者显示一个带有筛选器的事件列表链接

我正在使用Symfony 2.5。

是的,这是可能的

必须获取当前所有者并创建自定义查询生成器,才能仅获取与所有者标识符相关的事件

protected function configureFormFields(FormMapper $formMapper)
{
    // get current owner
    $ownerId = $this->subject->getId();
    // using query_builder to create a custom query based on current owner
    $formMapper->add('events', null, array(
        'query_builder' => function(EntityRepository $er) use ($ownerId) {
            $events = $er->createQueryBuilder('e');
            if ($ownerId != null) {
                $events = $er->where('e.owner = :ownerId')
                             ->setParameter('ownerId', $ownerId);
            }
            return $events;
        }
    ));
}
另外,不要忘记添加EntityRepository的用法:

使用条令\ORM\EntityRepository