Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Commit 6c7893b

Browse files
committed
Merge branch 'm00t-stacked_url_map'
2 parents 3d36ed4 + c50e588 commit 6c7893b

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/Stack/UrlMap.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQ
5656
foreach ($this->map as $path => $app) {
5757
if (0 === strpos($pathInfo, $path)) {
5858
$server = $request->server->all();
59-
$server['SCRIPT_FILENAME'] = $server['SCRIPT_NAME'] = $server['PHP_SELF'] = $path;
59+
$server['SCRIPT_FILENAME'] = $server['SCRIPT_NAME'] = $server['PHP_SELF'] = $request->getBaseUrl().$path;
6060

6161
$attributes = $request->attributes->all();
62-
$attributes[static::ATTR_PREFIX] = $path;
62+
$attributes[static::ATTR_PREFIX] = $request->getBaseUrl().$path;
6363

6464
$newRequest = $request->duplicate(null, null, $attributes, null, null, $server);
6565

tests/functional/UrlMapTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,34 @@ public function testOverridesPathInfo()
5454
$response = $urlMap->handle(Request::create('/foo?bar=baz'));
5555
$this->assertEquals('Hello World', $response->getContent());
5656
}
57+
58+
public function testShouldBeStackable()
59+
{
60+
$app = new CallableHttpKernel(function (Request $request) {
61+
return new Response("Fallback!");
62+
});
63+
64+
// $this do not reference the wrapping object in 5.3
65+
$self = $this;
66+
67+
$urlMapInner = new UrlMap($app);
68+
$urlMapInner->setMap(array(
69+
'/bar' => new CallableHttpKernel(function (Request $request) use ($self) {
70+
$self->assertEquals('/', $request->getPathinfo());
71+
$self->assertEquals('/foo/bar', $request->attributes->get(UrlMap::ATTR_PREFIX));
72+
$self->assertEquals('/foo/bar', $request->getBaseUrl());
73+
74+
return new Response("Hello World");
75+
}),
76+
));
77+
78+
$urlMapOuter = new UrlMap($app);
79+
$urlMapOuter->setMap(array(
80+
'/foo' => $urlMapInner
81+
));
82+
83+
$response = $urlMapOuter->handle(Request::create('/foo/bar?baz=fiz'));
84+
$this->assertEquals('Hello World', $response->getContent());
85+
}
5786
}
5887

0 commit comments

Comments
 (0)