Skip to content

Commit b8a16c3

Browse files
authored
Introduce afterConfiguration to reuse options (#229)
1 parent c2d6f09 commit b8a16c3

File tree

3 files changed

+32
-27
lines changed

3 files changed

+32
-27
lines changed

src/Adapter/Doctrine/FetchJoinORMAdapter.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,6 @@ class FetchJoinORMAdapter extends ORMAdapter
3131
{
3232
protected $use_simple_total;
3333

34-
public function configure(array $options)
35-
{
36-
parent::configure($options);
37-
$this->use_simple_total = $options['simple_total_query'];
38-
}
39-
4034
protected function configureOptions(OptionsResolver $resolver)
4135
{
4236
parent::configureOptions($resolver);
@@ -53,6 +47,13 @@ protected function configureOptions(OptionsResolver $resolver)
5347
return $resolver;
5448
}
5549

50+
protected function afterConfiguration(array $options): void
51+
{
52+
parent::afterConfiguration($options);
53+
54+
$this->use_simple_total = $options['simple_total_query'];
55+
}
56+
5657
protected function prepareQuery(AdapterQuery $query)
5758
{
5859
$state = $query->getState();

src/Adapter/Doctrine/ORMAdapter.php

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,7 @@ public function configure(array $options)
7777
$this->configureOptions($resolver);
7878
$options = $resolver->resolve($options);
7979

80-
// Enable automated mode or just get the general default entity manager
81-
if (null === ($this->manager = $this->registry->getManagerForClass($options['entity']))) {
82-
throw new InvalidConfigurationException(sprintf('Doctrine has no manager for entity "%s", is it correctly imported and referenced?', $options['entity']));
83-
}
84-
$this->metadata = $this->manager->getClassMetadata($options['entity']);
85-
if (empty($options['query'])) {
86-
$options['query'] = [new AutomaticQueryBuilder($this->manager, $this->metadata)];
87-
}
88-
89-
// Set options
90-
$this->hydrationMode = $options['hydrate'];
91-
$this->queryBuilderProcessors = $options['query'];
92-
$this->criteriaProcessors = $options['criteria'];
80+
$this->afterConfiguration($options);
9381
}
9482

9583
/**
@@ -316,6 +304,23 @@ protected function configureOptions(OptionsResolver $resolver)
316304
;
317305
}
318306

307+
protected function afterConfiguration(array $options): void
308+
{
309+
// Enable automated mode or just get the general default entity manager
310+
if (null === ($this->manager = $this->registry->getManagerForClass($options['entity']))) {
311+
throw new InvalidConfigurationException(sprintf('Doctrine has no manager for entity "%s", is it correctly imported and referenced?', $options['entity']));
312+
}
313+
$this->metadata = $this->manager->getClassMetadata($options['entity']);
314+
if (empty($options['query'])) {
315+
$options['query'] = [new AutomaticQueryBuilder($this->manager, $this->metadata)];
316+
}
317+
318+
// Set options
319+
$this->hydrationMode = $options['hydrate'];
320+
$this->queryBuilderProcessors = $options['query'];
321+
$this->criteriaProcessors = $options['criteria'];
322+
}
323+
319324
/**
320325
* @param callable|QueryBuilderProcessorInterface $provider
321326
*

tests/Fixtures/AppBundle/DataTable/Adapter/CustomORMAdapter.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
namespace Tests\Fixtures\AppBundle\DataTable\Adapter;
1414

15-
use Doctrine\ORM\Query;
1615
use Doctrine\ORM\QueryBuilder;
1716
use Omines\DataTablesBundle\Adapter\AdapterQuery;
1817
use Omines\DataTablesBundle\Adapter\Doctrine\ORMAdapter;
@@ -22,13 +21,6 @@ class CustomORMAdapter extends ORMAdapter
2221
{
2322
protected $hydrationMode;
2423

25-
public function configure(array $options)
26-
{
27-
parent::configure($options);
28-
29-
$this->hydrationMode = isset($options['hydrate']) ? $options['hydrate'] : Query::HYDRATE_OBJECT;
30-
}
31-
3224
protected function prepareQuery(AdapterQuery $query)
3325
{
3426
parent::prepareQuery($query);
@@ -64,4 +56,11 @@ protected function getResults(AdapterQuery $query): \Traversable
6456
yield $result;
6557
}
6658
}
59+
60+
protected function afterConfiguration(array $options): void
61+
{
62+
parent::afterConfiguration($options);
63+
64+
$this->hydrationMode = $options['hydrate'];
65+
}
6766
}

0 commit comments

Comments
 (0)