Skip to content

Commit d611ae6

Browse files
committed
Inject services into filter setting
1 parent 28bc755 commit d611ae6

File tree

3 files changed

+51
-16
lines changed

3 files changed

+51
-16
lines changed

src/FilterSetting/FilterSettingTypeFactory.php

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
namespace MetaModels\AttributeCheckboxBundle\FilterSetting;
2323

2424
use Doctrine\DBAL\Connection;
25+
use MetaModels\Filter\FilterUrlBuilder;
2526
use MetaModels\Filter\Setting\AbstractFilterSettingTypeFactory;
27+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
2628

2729
/**
2830
* Attribute type factory for published filter settings.
@@ -36,13 +38,32 @@ class FilterSettingTypeFactory extends AbstractFilterSettingTypeFactory
3638
*/
3739
private $connection;
3840

41+
/**
42+
* The event dispatcher.
43+
*
44+
* @var EventDispatcherInterface
45+
*/
46+
private $dispatcher;
47+
48+
/**
49+
* The filter URL builder.
50+
*
51+
* @var FilterUrlBuilder
52+
*/
53+
private $filterUrlBuilder;
54+
3955
/**
4056
* Create a new instance.
4157
*
42-
* @param Connection $connection Databse connection.
58+
* @param Connection $connection The database connection.
59+
* @param EventDispatcherInterface|null $dispatcher The event dispatcher.
60+
* @param FilterUrlBuilder|null $filterUrlBuilder The filter URL builder.
4361
*/
44-
public function __construct(Connection $connection)
45-
{
62+
public function __construct(
63+
Connection $connection,
64+
EventDispatcherInterface $dispatcher = null,
65+
FilterUrlBuilder $filterUrlBuilder = null
66+
) {
4667
parent::__construct();
4768

4869
$this
@@ -51,17 +72,22 @@ public function __construct(Connection $connection)
5172
->setTypeClass(Published::class)
5273
->allowAttributeTypes('checkbox');
5374

54-
$this->connection = $connection;
75+
$this->connection = $connection;
76+
$this->dispatcher = $dispatcher;
77+
$this->filterUrlBuilder = $filterUrlBuilder;
5578
}
5679

5780
/**
5881
* {@inheritdoc}
5982
*/
6083
public function createInstance($information, $filterSettings)
6184
{
62-
// $this->typeClass is private and there is no getter...
63-
$typeClass = Published::class;
64-
65-
return new $typeClass($filterSettings, $information, $this->connection);
85+
return new Published(
86+
$filterSettings,
87+
$information,
88+
$this->connection,
89+
$this->dispatcher,
90+
$this->filterUrlBuilder
91+
);
6692
}
6793
}

src/FilterSetting/Published.php

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@
2424

2525
use Contao\System;
2626
use Doctrine\DBAL\Connection;
27+
use MetaModels\Filter\FilterUrlBuilder;
2728
use MetaModels\Filter\Setting\ICollection;
2829
use MetaModels\Filter\Setting\Simple;
2930
use MetaModels\Filter\IFilter;
3031
use MetaModels\Filter\Rules\SimpleQuery;
3132
use MetaModels\Filter\Rules\StaticIdList;
33+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
3234

3335
/**
3436
* Published setting handler for checkboxes.
@@ -45,15 +47,20 @@ class Published extends Simple
4547
/**
4648
* Constructor - initialize the object and store the parameters.
4749
*
48-
* @param ICollection $collection The parenting filter settings object.
49-
*
50-
* @param array $data The attributes for this filter setting.
51-
*
52-
* @param Connection $connection The database connection.
50+
* @param ICollection $collection The parenting filter settings object.
51+
* @param array $data The attributes for this filter setting.
52+
* @param Connection $connection The database connection.
53+
* @param EventDispatcherInterface|null $dispatcher The event dispatcher.
54+
* @param FilterUrlBuilder|null $filterUrlBuilder The filter URL builder.
5355
*/
54-
public function __construct(ICollection $collection, array $data, Connection $connection = null)
55-
{
56-
parent::__construct($collection, $data);
56+
public function __construct(
57+
ICollection $collection,
58+
array $data,
59+
Connection $connection = null,
60+
EventDispatcherInterface $dispatcher = null,
61+
FilterUrlBuilder $filterUrlBuilder = null
62+
) {
63+
parent::__construct($collection, $data, $dispatcher, $filterUrlBuilder);
5764

5865
if (null === $connection) {
5966
// @codingStandardsIgnoreStart Silencing errors is discouraged

src/Resources/config/services.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ services:
1111
class: MetaModels\AttributeCheckboxBundle\FilterSetting\FilterSettingTypeFactory
1212
arguments:
1313
- '@database_connection'
14+
- '@event_dispatcher'
15+
- '@MetaModels\Filter\FilterUrlBuilder'
1416
tags:
1517
- { name: metamodels.filter_factory }

0 commit comments

Comments
 (0)