Skip to content

Commit 6d01d47

Browse files
authored
Merge pull request #3 from Padam87/compound_filters
Compound filters
2 parents 171dff0 + a5e6fdc commit 6d01d47

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

Form/Extension/FilterExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ public function configureOptions(OptionsResolver $resolver)
2727

2828
$resolver->setDefault('filter_ignore_null', true);
2929
$resolver->setAllowedTypes('filter_ignore_null', ['bool']);
30+
31+
$resolver->setDefault('filter_compound', false);
32+
$resolver->setAllowedTypes('filter_compound', ['bool']);
3033
}
3134

3235
/**

Service/Filters.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
class Filters
99
{
10-
public function apply(QueryBuilder $qb, FormInterface $filters)
10+
public function apply(QueryBuilder $qb, FormInterface $filters, ?string $rootAlias = null)
1111
{
12+
$rootAlias = $rootAlias ?? $qb->getRootAliases()[0];
13+
1214
foreach ($filters->all() as $name => $filter) {
15+
1316
$ignoreNull = $filter->getConfig()->getOption('filter_ignore_null');
1417

1518
if ($ignoreNull && $filter->isEmpty()) {
@@ -22,13 +25,19 @@ public function apply(QueryBuilder $qb, FormInterface $filters)
2225
$field = $filter->getConfig()->getOption('filter_field');
2326

2427
if (null === $alias) {
25-
$alias = $qb->getRootAliases()[0];
28+
$alias = $rootAlias;
2629
}
2730

2831
if (null === $field) {
2932
$field = $name;
3033
}
3134

35+
if ($filter->getConfig()->getOption('filter_compound')) {
36+
$this->apply($qb, $filter, $alias);
37+
38+
continue;
39+
}
40+
3241
if ($callback === false) {
3342
continue;
3443
}

0 commit comments

Comments
 (0)