From 68a2c814c0a2c842bd235d8cd142fbe04f737656 Mon Sep 17 00:00:00 2001 From: Lukas Frey Date: Fri, 17 Nov 2023 19:29:35 +0100 Subject: [PATCH] fix: global search for root resources Signed-off-by: Lukas Frey --- src/Resources/NestedResource.php | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/Resources/NestedResource.php b/src/Resources/NestedResource.php index bb9029a..60e73b2 100644 --- a/src/Resources/NestedResource.php +++ b/src/Resources/NestedResource.php @@ -12,6 +12,7 @@ use Guava\Filament\NestedResources\Concerns\HasBreadcrumbTitleAttribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Arr; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\Route; abstract class NestedResource extends Resource @@ -126,17 +127,31 @@ public static function getBreadcrumbs(Page $page, Model $record = null): array public static function getGlobalSearchResultUrl(Model $record): ?string { if (static::hasPage('edit') && static::canEdit($record)) { - return static::getUrl('edit', [ - ...static::getAncestor()->getNormalizedRouteParameters($record), - 'record' => $record, - ]); + return static::getUrl( + 'edit', + collect([ + 'record' => $record->id, + ]) + ->when( + $ancestor = static::getAncestor(), + fn (Collection $collection) => $collection->mergeRecursive(...$ancestor->getNormalizedRouteParameters($record)) + ) + ->toArray() + ); } if (static::hasPage('view') && static::canView($record)) { - return static::getUrl('view', [ - ...static::getAncestor()->getNormalizedRouteParameters($record), - 'record' => $record, - ]); + return static::getUrl( + 'view', + collect([ + 'record' => $record->id, + ]) + ->when( + $ancestor = static::getAncestor(), + fn (Collection $collection) => $collection->merge($ancestor->getNormalizedRouteParameters($record)) + ) + ->toArray() + ); } return parent::getGlobalSearchResultUrl($record);