diff --git a/src/bundle/Controller/Content/ContentTreeController.php b/src/bundle/Controller/Content/ContentTreeController.php index 29a10e06e6..372f914de5 100644 --- a/src/bundle/Controller/Content/ContentTreeController.php +++ b/src/bundle/Controller/Content/ContentTreeController.php @@ -23,6 +23,7 @@ use Ibexa\Contracts\Core\Repository\Values\Content\Content; use Ibexa\Contracts\Core\Repository\Values\Content\Location; use Ibexa\Contracts\Core\Repository\Values\Content\Query; +use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion; use Ibexa\Contracts\Core\Repository\Values\User\Limitation; use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface; use Ibexa\Rest\Message; @@ -78,7 +79,7 @@ public function loadChildrenAction( int $parentLocationId, int $limit, int $offset, - Query\Criterion $filter + ?Criterion $filter ): Node { $location = $this->locationService->loadLocation($parentLocationId); $loadSubtreeRequestNode = new LoadSubtreeRequestNode($parentLocationId, $limit, $offset); diff --git a/src/bundle/ControllerArgumentResolver/ContentTreeChildrenQueryArgumentResolver.php b/src/bundle/ControllerArgumentResolver/ContentTreeChildrenQueryArgumentResolver.php index 2f42f3e7d9..653bfd48ed 100644 --- a/src/bundle/ControllerArgumentResolver/ContentTreeChildrenQueryArgumentResolver.php +++ b/src/bundle/ControllerArgumentResolver/ContentTreeChildrenQueryArgumentResolver.php @@ -40,13 +40,20 @@ public function supports(Request $request, ArgumentMetadata $argument): bool } /** - * @return iterable<\Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion> + * @return iterable<\Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion|null> * * @throws \Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException */ public function resolve(Request $request, ArgumentMetadata $argument): iterable { - yield new LogicalAnd($this->processFilterQueryCriteria($request)); + $criteria = $this->processFilterQueryCriteria($request); + if ($argument->isNullable() && empty($criteria)) { + yield null; + + return; + } + + yield new LogicalAnd($criteria); } /**