Skip to content

Commit 0104ee7

Browse files
themsaidtaylorotwell
authored andcommitted
[5.5] make fluent Route::middleware work with variadic arguments (laravel#21930)
* make fluent Route::middleware work with variadic arguments * fix style
1 parent ada03c8 commit 0104ee7

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

src/Illuminate/Routing/RouteRegistrar.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ public function __call($method, $parameters)
168168
}
169169

170170
if (in_array($method, $this->allowedAttributes)) {
171+
if ($method == 'middleware') {
172+
return $this->attribute($method, is_array($parameters[0]) ? $parameters[0] : $parameters);
173+
}
174+
171175
return $this->attribute($method, $parameters[0]);
172176
}
173177

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
namespace Illuminate\Tests\Integration\Routing\FluentRoutingTest;
4+
5+
use Orchestra\Testbench\TestCase;
6+
use Illuminate\Support\Facades\Route;
7+
8+
/**
9+
* @group integration
10+
*/
11+
class FluentRoutingTest extends TestCase
12+
{
13+
public function test_middleware_run_when_registered_as_array_or_params()
14+
{
15+
Route::middleware(Middleware::class, Middleware2::class)
16+
->get('one', function () {
17+
return 'Hello World';
18+
});
19+
20+
Route::get('two', function () {
21+
return 'Hello World';
22+
})->middleware(Middleware::class, Middleware2::class);
23+
24+
Route::middleware([Middleware::class, Middleware2::class])
25+
->get('three', function () {
26+
return 'Hello World';
27+
});
28+
29+
Route::get('four', function () {
30+
return 'Hello World';
31+
})->middleware([Middleware::class, Middleware2::class]);
32+
33+
$this->assertEquals('middleware output', $this->get('one')->content());
34+
$this->assertEquals('middleware output', $this->get('two')->content());
35+
$this->assertEquals('middleware output', $this->get('three')->content());
36+
$this->assertEquals('middleware output', $this->get('four')->content());
37+
}
38+
}
39+
40+
41+
class Middleware
42+
{
43+
public function handle($request, $next)
44+
{
45+
return $next($request);
46+
}
47+
}
48+
49+
class Middleware2
50+
{
51+
public function handle()
52+
{
53+
return 'middleware output';
54+
}
55+
}

0 commit comments

Comments
 (0)