/** * {@inheritdoc} */ public function applyFilter(QueryBuilder $qb, array $data, array $options) { self::$filterCount++; $alias = $qb->getRootAliases()[0]; if ($options['mode'] === self::MODE_DEFAULT) { $qb->andWhere(FilterOperator::buildExpression($alias . '.' . $data['property_path'], $data['operator'], ':filter_' . self::$filterCount))->setParameter('filter_' . self::$filterCount, FilterOperator::buildParameter($data['operator'], $data['value'])); } else { $value = $options['mode'] === self::MODE_IS_NULL ? $data['value'] : !$data['value']; $operator = $value ? FilterOperator::IS_NULL : FilterOperator::IS_NOT_NULL; $qb->andWhere(FilterOperator::buildExpression($alias . '.' . $data['property_path'], $operator, ':filter_' . self::$filterCount)); } }
/** * {@inheritdoc} */ public function buildActiveFilter(TableView $view, array $data, array $options) { $value = $data['value']; $choices = $options['choices']; $transform = function ($v) use($choices) { if (array_key_exists($v, $choices)) { return $choices[$v]; } return $v; }; if (is_array($value)) { $value = array_map($transform, $value); } else { $value = $transform($value); } $activeFilter = new ActiveFilter(); $activeFilter->setVars(['full_name' => $data['full_name'], 'id' => $data['id'], 'field' => $data['label'], 'operator' => FilterOperator::getLabel($data['operator']), 'value' => $value]); $view->active_filters[] = $activeFilter; }
/** * {@inheritdoc} */ public function buildActiveFilter(TableView $view, array $data, array $options) { $repo = $this->em->getRepository($options['class']); $entities = $repo->findBy(['id' => $data['value']]); $values = []; if (0 < strlen($property = $options['property'])) { $accessor = PropertyAccess::createPropertyAccessor(); $transform = function ($entity) use($accessor, $property) { return $accessor->getValue($entity, $property); }; } else { $transform = function ($entity) { return (string) $entity; }; } foreach ($entities as $entity) { $values[] = $transform($entity); } $activeFilter = new ActiveFilter(); $activeFilter->setVars(['full_name' => $data['full_name'], 'id' => $data['id'], 'field' => $data['label'], 'operator' => FilterOperator::getLabel($data['operator']), 'value' => $values]); $view->active_filters[] = $activeFilter; }
/** * {@inheritdoc} */ public function applyFilter(QueryBuilder $qb, array $data, array $options) { self::$filterCount++; $alias = $qb->getRootAliases()[0]; $qb->andWhere(FilterOperator::buildExpression($alias . '.' . $data['property_path'], $data['operator'], ':filter_' . self::$filterCount))->setParameter('filter_' . self::$filterCount, $data['value'], Type::DATETIME); }
/** * {@inheritdoc} */ public function buildFilterFrom(FormBuilderInterface $form, array $options) { $form->add('operator', 'choice', ['label' => false, 'choices' => FilterOperator::getChoices($this->getOperators())])->add('value', 'number', ['label' => false]); }