diff --git a/src/RequestHandler.php b/src/RequestHandler.php
index 45b67ab..cc5b9e1 100644
--- a/src/RequestHandler.php
+++ b/src/RequestHandler.php
@@ -42,6 +42,10 @@ public function __invoke(Request $request): mixed
abort_unless($matchedView ?? null, 404);
+ if ($name = $matchedView->name()) {
+ $request->route()->action['as'] = $name;
+ }
+
app(Dispatcher::class)->dispatch(new Events\ViewMatched($matchedView, $mountPath));
$middleware = collect($this->middleware($mountPath, $matchedView));
@@ -60,11 +64,13 @@ public function __invoke(Request $request): mixed
$app = app();
- $app->make(FolioManager::class)->terminateUsing(
- fn () => $middleware->filter(fn ($middleware) => is_string($middleware) && class_exists($middleware) && method_exists($middleware, 'terminate'))
- ->map(fn (string $middleware) => $app->make($middleware))
- ->each(fn (object $middleware) => $app->call([$middleware, 'terminate'], ['request' => $request, 'response' => $response])),
- );
+ $app->make(FolioManager::class)->terminateUsing(function () use ($middleware, $app, $request, $response) {
+ $middleware->filter(fn ($m) => is_string($m) && class_exists($m) && method_exists($m, 'terminate'))
+ ->map(fn (string $m) => $app->make($m))
+ ->each(fn (object $m) => $app->call([$m, 'terminate'], ['request' => $request, 'response' => $response]));
+
+ $request->route()->action['as'] = 'laravel-folio';
+ });
return $response;
});
diff --git a/tests/Feature/CurrentRouteTest.php b/tests/Feature/CurrentRouteTest.php
new file mode 100644
index 0000000..fececb4
--- /dev/null
+++ b/tests/Feature/CurrentRouteTest.php
@@ -0,0 +1,31 @@
+ Folio::route(__DIR__.'/resources/views/another-set-of-pages'));
+
+it('dynamically updates folio is named route', function () {
+ $response = $this->get(route('pens.index'));
+
+ $response
+ ->assertSee('Is pens.index active: true.')
+ ->assertSee('Current route name: pens.index.')
+ ->assertSee('Has pens.index: false.')
+ ->assertSee('Is pens: true.');
+});
+
+it('resets folio is route name after handling request', function () {
+ $this->get(route('pens.index'));
+
+ expect(request()->route()->getName())->toBe('laravel-folio');
+});
+
+it('does not change the route name if there is no name', function () {
+ $response = $this->get('pens/show');
+
+ $response
+ ->assertSee('Is pens.show active: false.')
+ ->assertSee('Current route name: laravel-folio.')
+ ->assertSee('Has pens.show: false.')
+ ->assertSee('Is pens/show: true.');
+});
diff --git a/tests/Feature/resources/views/another-set-of-pages/pens/index.blade.php b/tests/Feature/resources/views/another-set-of-pages/pens/index.blade.php
new file mode 100644
index 0000000..a324de8
--- /dev/null
+++ b/tests/Feature/resources/views/another-set-of-pages/pens/index.blade.php
@@ -0,0 +1,14 @@
+
+
+
+
+ - Is pens.index active: {{ request()->routeIs('pens.index') ? 'true' : 'false' }}.
+ - Current route name: {{ Route::currentRouteName() }}.
+ - Has pens.index: {{ Route::has('pens.index') ? 'true' : 'false' }}.
+ - Is pens: {{ request()->is('pens') ? 'true' : 'false' }}.
+
+
diff --git a/tests/Feature/resources/views/another-set-of-pages/pens/show.blade.php b/tests/Feature/resources/views/another-set-of-pages/pens/show.blade.php
new file mode 100644
index 0000000..7e0c87a
--- /dev/null
+++ b/tests/Feature/resources/views/another-set-of-pages/pens/show.blade.php
@@ -0,0 +1,8 @@
+
+
+ - Is pens.show active: {{ request()->routeIs('pens.show') ? 'true' : 'false' }}.
+ - Current route name: {{ Route::currentRouteName() }}.
+ - Has pens.show: {{ Route::has('pens.show') ? 'true' : 'false' }}.
+ - Is pens/show: {{ request()->is('pens/show') ? 'true' : 'false' }}.
+
+