From 1e6ff3fb36db877c62096f529adb339132bab2ed Mon Sep 17 00:00:00 2001 From: Thomas Lallement Date: Fri, 20 Mar 2015 10:13:42 +0100 Subject: [PATCH 1/4] Allow to return null in query_builder Closure --- .../Form/ChoiceList/ORMQueryBuilderLoader.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php index 872e77affe0b7..f0e3dd460ad5b 100644 --- a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php +++ b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php @@ -55,7 +55,7 @@ public function __construct($queryBuilder, $manager = null, $class = null) $queryBuilder = $queryBuilder($manager->getRepository($class)); - if (!$queryBuilder instanceof QueryBuilder) { + if (null !== $queryBuilder && !$queryBuilder instanceof QueryBuilder) { throw new UnexpectedTypeException($queryBuilder, 'Doctrine\ORM\QueryBuilder'); } } @@ -68,6 +68,11 @@ public function __construct($queryBuilder, $manager = null, $class = null) */ public function getEntities() { + if (null === $this->queryBuilder) { + + return array(); + } + return $this->queryBuilder->getQuery()->execute(); } @@ -76,6 +81,11 @@ public function getEntities() */ public function getEntitiesByIds($identifier, array $values) { + if (null === $this->queryBuilder) { + + return array(); + } + $qb = clone ($this->queryBuilder); $alias = current($qb->getRootAliases()); $parameter = 'ORMQueryBuilderLoader_getEntitiesByIds_'.$identifier; From b197ada6b082397ffa0212c28cfd09d1170decec Mon Sep 17 00:00:00 2001 From: Thomas Lallement Date: Mon, 23 Mar 2015 11:18:13 +0100 Subject: [PATCH 2/4] Remove blank line before return statement --- .../Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php index f0e3dd460ad5b..767a222e49d0d 100644 --- a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php +++ b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php @@ -69,7 +69,6 @@ public function __construct($queryBuilder, $manager = null, $class = null) public function getEntities() { if (null === $this->queryBuilder) { - return array(); } @@ -82,7 +81,6 @@ public function getEntities() public function getEntitiesByIds($identifier, array $values) { if (null === $this->queryBuilder) { - return array(); } From f0f1b42453b21c43793783c786bbd9c3abe24188 Mon Sep 17 00:00:00 2001 From: Thomas Lallement Date: Tue, 24 Mar 2015 16:18:30 +0100 Subject: [PATCH 3/4] Add unit test --- .../Doctrine/Tests/Form/Type/EntityTypeTest.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php b/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php index 25afbed492150..8827c14b65bcc 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php @@ -196,6 +196,19 @@ public function testConfigureQueryBuilderWithClosureReturningNonQueryBuilder() $field->submit('2'); } + + public function testConfigureQueryBuilderWithClosureReturningNull() + { + $field = $this->factory->createNamed('name', 'entity', null, array( + 'em' => 'default', + 'class' => self::SINGLE_IDENT_CLASS, + 'query_builder' => function () { + return null; + }, + )); + + $this->assertEquals(array(), $field->createView()->vars['choices']); + } public function testSetDataSingleNull() { From d323db0d9f7e4fca070fed77006ddf08ab477bfd Mon Sep 17 00:00:00 2001 From: Thomas Lallement Date: Wed, 25 Mar 2015 07:54:26 +0100 Subject: [PATCH 4/4] Add null as supported value for queryBuilder in docblock --- .../Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php index 767a222e49d0d..1b45e4e7d909e 100644 --- a/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php +++ b/src/Symfony/Bridge/Doctrine/Form/ChoiceList/ORMQueryBuilderLoader.php @@ -27,7 +27,7 @@ class ORMQueryBuilderLoader implements EntityLoaderInterface * * This property should only be accessed through queryBuilder. * - * @var QueryBuilder + * @var QueryBuilder|null */ private $queryBuilder; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy