translator = $translator; } public function addRole() { return null; } public function alterQuery(QueryBuilder $qb, $data) { $qb->addSelect('person.gender as gender'); $qb->addGroupBy('gender'); } public function applyOn() { return Declarations::PERSON_TYPE; } public function buildForm(FormBuilderInterface $builder) { } public function getLabels($key, array $values, $data) { return function ($value) { switch ($value) { case Person::FEMALE_GENDER: return $this->translator->trans('woman'); case Person::MALE_GENDER: return $this->translator->trans('man'); case Person::BOTH_GENDER: return $this->translator->trans('both'); case null: return $this->translator->trans('Not given'); case '_header': return $this->translator->trans('Gender'); default: throw new LogicException(sprintf('The value %s is not valid', $value)); } }; } public function getQueryKeys($data) { return ['gender']; } public function getTitle() { return 'Group people by gender'; } }