From f566d370be62da7369f6a3bcbb790d933b41b1e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Bra=C3=B1a?= Date: Tue, 4 Aug 2026 12:18:54 +0200 Subject: [PATCH] fix(route): fix implicit route model binding for Project - Move Route::model to register() in AppServiceProvider so it persists in route cache - Re-register in boot() for runtime - Fix navigation spacing for language/notification/user menu All 101 tests pass --- app/Http/Middleware/BindProjectModel.php | 23 +++++++++++++++++++ app/Providers/AppServiceProvider.php | 8 ++++++- .../livewire/layout/navigation.blade.php | 3 ++- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 app/Http/Middleware/BindProjectModel.php diff --git a/app/Http/Middleware/BindProjectModel.php b/app/Http/Middleware/BindProjectModel.php new file mode 100644 index 0000000..1efef77 --- /dev/null +++ b/app/Http/Middleware/BindProjectModel.php @@ -0,0 +1,23 @@ +route(); + if ($route && $route->parameter('project')) { + $projectId = $route->parameter('project'); + if (is_string($projectId) && is_numeric($projectId)) { + $project = Project::findOrFail($projectId); + $route->setParameter('project', $project); + } + } + return $next($request); + } +} \ No newline at end of file diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index f956cfd..2bfb865 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,9 +2,11 @@ namespace App\Providers; +use App\Models\Project; use App\Models\Task; use App\Policies\TaskPolicy; use Illuminate\Support\Facades\Gate; +use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -14,7 +16,8 @@ class AppServiceProvider extends ServiceProvider */ public function register(): void { - // + // Register route model bindings early (before routes are loaded) + Route::model('project', Project::class); } /** @@ -22,6 +25,9 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { + // Re-register model bindings so they persist in route cache + Route::model('project', Project::class); + // Register policies Gate::policy(Task::class, TaskPolicy::class); diff --git a/resources/views/livewire/layout/navigation.blade.php b/resources/views/livewire/layout/navigation.blade.php index b89d2e4..abf07ee 100644 --- a/resources/views/livewire/layout/navigation.blade.php +++ b/resources/views/livewire/layout/navigation.blade.php @@ -49,13 +49,14 @@ new class extends Component + @can('view users')