repository = $entryRepository; $this->user = $token->getToken()->getUser(); } public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('readingTime', NumberRangeFilterType::class) ->add('createdAt', DateRangeFilterType::class, array( 'left_date_options' => array( 'attr' => array( 'placeholder' => 'dd/mm/yyyy', ), 'format' => 'dd/MM/yyyy', 'widget' => 'single_text', ), 'right_date_options' => array( 'attr' => array( 'placeholder' => 'dd/mm/yyyy', ), 'format' => 'dd/MM/yyyy', 'widget' => 'single_text', ), ) ) ->add('domainName', TextFilterType::class, array( 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { $value = $values['value']; if (strlen($value) <= 2 || empty($value)) { return; } $expression = $filterQuery->getExpr()->like($field, $filterQuery->getExpr()->literal('%'.$value.'%')); return $filterQuery->createCondition($expression); }, )) ->add('isArchived', CheckboxFilterType::class) ->add('isStarred', CheckboxFilterType::class) ->add('previewPicture', CheckboxFilterType::class, array( 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { if (false === $values['value']) { return; } $expression = $filterQuery->getExpr()->isNotNull($field); return $filterQuery->createCondition($expression); }, )) ->add('language', ChoiceFilterType::class, array( 'choices' => array_flip($this->repository->findDistinctLanguageByUser($this->user->getId())), 'choices_as_values' => true, )) ; } public function getBlockPrefix() { return 'entry_filter'; } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'csrf_protection' => false, 'validation_groups' => array('filtering'), )); } }