Skip to content

Commit f91e652

Browse files
authored
Merge pull request #286 from tobias-93/fix-symfony3-1.x
Fix for new way of handling scheme in Symfony 3.0 (1.x)
2 parents 30c08e7 + 79bfd64 commit f91e652

File tree

6 files changed

+35
-13
lines changed

6 files changed

+35
-13
lines changed

Extractor/ExposedRoutesExtractor.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ public function getRoutes()
7373
$compiledRoute->getTokens(),
7474
$defaults,
7575
$requirements,
76-
$hostTokens
76+
$hostTokens,
77+
$route->getMethods(),
78+
$route->getSchemes()
7779
);
7880
}
7981

Extractor/ExtractedRoute.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@ class ExtractedRoute
1717
private $defaults;
1818
private $requirements;
1919
private $hosttokens;
20+
private $methods;
21+
private $schemes;
2022

21-
public function __construct(array $tokens, array $defaults, array $requirements, array $hosttokens = array())
23+
public function __construct(array $tokens, array $defaults, array $requirements, array $hosttokens = array(), array $methods = array(), array $schemes = array())
2224
{
2325
$this->tokens = $tokens;
2426
$this->defaults = $defaults;
2527
$this->requirements = $requirements;
2628
$this->hosttokens = $hosttokens;
29+
$this->methods = $methods;
30+
$this->schemes = $schemes;
2731
}
2832

2933
public function getTokens()
@@ -45,4 +49,14 @@ public function getHosttokens()
4549
{
4650
return $this->hosttokens;
4751
}
52+
53+
public function getMethods()
54+
{
55+
return $this->methods;
56+
}
57+
58+
public function getSchemes()
59+
{
60+
return $this->schemes;
61+
}
4862
}

Resources/js/externs.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ var externs = {
66
tokens: '',
77
defaults: '',
88
requirements: '',
9-
hosttokens: ''
9+
hosttokens: '',
10+
schemes: '',
11+
methods: ''
1012
};

Resources/js/router.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ goog.addSingletonGetter(fos.Router);
2121
* tokens: (Array.<Array.<string>>),
2222
* defaults: (Object.<string, string>),
2323
* requirements: Object,
24-
* hosttokens: (Array.<string>)
24+
* hosttokens: (Array.<string>),
25+
* schemes: (Array.<string>),
26+
* methods: (Array.<string>)
2527
* }}
2628
*/
2729
fos.Router.Route;
@@ -239,6 +241,8 @@ fos.Router.prototype.generate = function(name, opt_params, absolute) {
239241
url = this.context_.base_url + url;
240242
if (goog.object.containsKey(route.requirements, "_scheme") && this.getScheme() != route.requirements["_scheme"]) {
241243
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + url;
244+
} else if (goog.object.containsKey(route, "schemes") && this.getScheme() != route.schemes[0]) {
245+
url = route.schemes[0] + "://" + (host || this.getHost()) + url;
242246
} else if (host && this.getHost() !== host) {
243247
url = this.getScheme() + "://" + host + url;
244248
} else if (absolute === true) {

Resources/public/js/router.js

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Tests/Controller/ControllerTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function testIndexAction()
3737
);
3838
$response = $controller->indexAction($this->getRequest('/'), 'json');
3939

40-
$this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[]},"blog":{"tokens":[["variable","\/","[^\/]+?","slug"],["text","\/blog-post"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]]}},"prefix":"","host":"","scheme":""}', $response->getContent());
40+
$this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog":{"tokens":[["variable","\/","[^\/]+?","slug"],["text","\/blog-post"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","scheme":""}', $response->getContent());
4141
}
4242

4343
public function testConfigCache()
@@ -50,11 +50,11 @@ public function testConfigCache()
5050
);
5151

5252
$response = $controller->indexAction($this->getRequest('/'), 'json');
53-
$this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[]}},"prefix":"","host":"","scheme":""}', $response->getContent());
53+
$this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","scheme":""}', $response->getContent());
5454

5555
// second call should serve the cached content
5656
$response = $controller->indexAction($this->getRequest('/'), 'json');
57-
$this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[]}},"prefix":"","host":"","scheme":""}', $response->getContent());
57+
$this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","scheme":""}', $response->getContent());
5858
}
5959

6060
/**

0 commit comments

Comments
 (0)