site_list_builder = $slb; } public function configureShowFields(ShowMapper $showMapper) { $showMapper ->add('username') ->add('email') ; } public function configureFormFields(FormMapper $formMapper) { $formMapper ->with('General') ->add('username') ->add('email') ->end() ; } public function configureListFields(ListMapper $listMapper) { $listMapper ->addIdentifier('username') ->add('email') ->add('lastLogin') ; } public function configureDatagridFilters(DatagridMapper $datagridMapper) { $datagridMapper ->add('username') ->add('email') ->add('applied_sites', 'callback', array( 'filter_field_options' => array('choices' => $this->site_list_builder->getList(), 'expanded' => false, 'multiple' => true), 'filter_options' => array( 'filter' => array($this, 'handleSitesFilter'), 'type' => 'choice', 'multiple' => 'true', ) ) ) ; } public function handleSitesFilter($queryBuilder, $alias, $field, $value) { if ($value == null) return; $queryBuilder->leftJoin('o.sites', 's'); $queryBuilder->andWhere($queryBuilder->expr()->in(sprintf('%s.%s', 's', 'id'), $value)); } }