Issue #2346283 by damiankloip: Add route name parameter to OutboundRouteProcessorInterface.
parent
a21acb3b7d
commit
de5830d665
|
@ -37,7 +37,7 @@ class RouteProcessorCsrf implements OutboundRouteProcessorInterface {
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function processOutbound(Route $route, array &$parameters) {
|
||||
public function processOutbound($route_name, Route $route, array &$parameters) {
|
||||
if ($route->hasRequirement('_csrf_token')) {
|
||||
$path = ltrim($route->getPath(), '/');
|
||||
// Replace the path parameters with values from the parameters array.
|
||||
|
|
|
@ -17,9 +17,10 @@ interface OutboundRouteProcessorInterface {
|
|||
/**
|
||||
* Processes the outbound route.
|
||||
*
|
||||
* @param string $route_name
|
||||
* The route name.
|
||||
* @param \Symfony\Component\Routing\Route $route
|
||||
* The outbound route to process.
|
||||
*
|
||||
* @param array $parameters
|
||||
* An array of parameters to be passed to the route compiler. Passed by
|
||||
* reference.
|
||||
|
@ -27,6 +28,6 @@ interface OutboundRouteProcessorInterface {
|
|||
* @return
|
||||
* The processed path.
|
||||
*/
|
||||
public function processOutbound(Route $route, array &$parameters);
|
||||
public function processOutbound($route_name, Route $route, array &$parameters);
|
||||
|
||||
}
|
||||
|
|
|
@ -50,10 +50,10 @@ class RouteProcessorManager implements OutboundRouteProcessorInterface {
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function processOutbound(Route $route, array &$parameters) {
|
||||
public function processOutbound($route_name, Route $route, array &$parameters) {
|
||||
$processors = $this->getOutbound();
|
||||
foreach ($processors as $processor) {
|
||||
$processor->processOutbound($route, $parameters);
|
||||
$processor->processOutbound($route_name, $route, $parameters);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ class NullGenerator extends UrlGenerator {
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function processRoute(Route $route, array &$parameters) {
|
||||
protected function processRoute($name, Route $route, array &$parameters) {
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -160,7 +160,7 @@ class UrlGenerator extends ProviderBasedGenerator implements UrlGeneratorInterfa
|
|||
$options += array('prefix' => '');
|
||||
$absolute = !empty($options['absolute']);
|
||||
$route = $this->getRoute($name);
|
||||
$this->processRoute($route, $parameters);
|
||||
$this->processRoute($name, $route, $parameters);
|
||||
|
||||
// Symfony adds any parameters that are not path slugs as query strings.
|
||||
if (isset($options['query']) && is_array($options['query'])) {
|
||||
|
@ -331,12 +331,13 @@ class UrlGenerator extends ProviderBasedGenerator implements UrlGeneratorInterfa
|
|||
*
|
||||
* @param \Symfony\Component\Routing\Route $route
|
||||
* The route object to process.
|
||||
*
|
||||
* @param array $parameters
|
||||
* An array of parameters to be passed to the route compiler.
|
||||
* @param string $name
|
||||
* The route name.
|
||||
*/
|
||||
protected function processRoute(SymfonyRoute $route, array &$parameters) {
|
||||
$this->routeProcessor->processOutbound($route, $parameters);
|
||||
protected function processRoute($name, SymfonyRoute $route, array &$parameters) {
|
||||
$this->routeProcessor->processOutbound($name, $route, $parameters);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -49,7 +49,7 @@ class RouteProcessorCsrfTest extends UnitTestCase {
|
|||
$route = new Route('/test-path');
|
||||
$parameters = array();
|
||||
|
||||
$this->processor->processOutbound($route, $parameters);
|
||||
$this->processor->processOutbound('test', $route, $parameters);
|
||||
// No parameters should be added to the parameters array.
|
||||
$this->assertEmpty($parameters);
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ class RouteProcessorCsrfTest extends UnitTestCase {
|
|||
$route = new Route('/test-path', array(), array('_csrf_token' => 'TRUE'));
|
||||
$parameters = array();
|
||||
|
||||
$this->processor->processOutbound($route, $parameters);
|
||||
$this->processor->processOutbound('test', $route, $parameters);
|
||||
// 'token' should be added to the parameters array.
|
||||
$this->assertArrayHasKey('token', $parameters);
|
||||
$this->assertSame($parameters['token'], 'test_token');
|
||||
|
@ -85,7 +85,7 @@ class RouteProcessorCsrfTest extends UnitTestCase {
|
|||
$route = new Route('/test-path/{slug}', array(), array('_csrf_token' => 'TRUE'));
|
||||
$parameters = array('slug' => 100);
|
||||
|
||||
$this->assertNull($this->processor->processOutbound($route, $parameters));
|
||||
$this->assertNull($this->processor->processOutbound('test', $route, $parameters));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -100,7 +100,7 @@ class RouteProcessorCsrfTest extends UnitTestCase {
|
|||
$route = new Route('{slug_1}/test-path/{slug_2}', array(), array('_csrf_token' => 'TRUE'));
|
||||
$parameters = array('slug_1' => 100, 'slug_2' => 'test');
|
||||
|
||||
$this->assertNull($this->processor->processOutbound($route, $parameters));
|
||||
$this->assertNull($this->processor->processOutbound('test', $route, $parameters));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,11 +34,12 @@ class RouteProcessorManagerTest extends UnitTestCase {
|
|||
public function testRouteProcessorManager() {
|
||||
$route = new Route('');
|
||||
$parameters = array('test' => 'test');
|
||||
$route_name = 'test_name';
|
||||
|
||||
$processors = array(
|
||||
10 => $this->getMockProcessor($route, $parameters),
|
||||
5 => $this->getMockProcessor($route, $parameters),
|
||||
0 => $this->getMockProcessor($route, $parameters),
|
||||
10 => $this->getMockProcessor($route_name, $route, $parameters),
|
||||
5 => $this->getMockProcessor($route_name, $route, $parameters),
|
||||
0 => $this->getMockProcessor($route_name, $route, $parameters),
|
||||
);
|
||||
|
||||
// Add the processors in reverse order.
|
||||
|
@ -46,12 +47,14 @@ class RouteProcessorManagerTest extends UnitTestCase {
|
|||
$this->processorManager->addOutbound($processor, $priority);
|
||||
}
|
||||
|
||||
$this->processorManager->processOutbound($route, $parameters);
|
||||
$this->processorManager->processOutbound($route_name, $route, $parameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a mock Route processor object.
|
||||
*
|
||||
* @param string $route_name
|
||||
* The route name.
|
||||
* @param \Symfony\Component\Routing\Route $route
|
||||
* The Route to use in mock with() expectation.
|
||||
* @param array $parameters
|
||||
|
@ -59,11 +62,11 @@ class RouteProcessorManagerTest extends UnitTestCase {
|
|||
*
|
||||
* @return \Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected function getMockProcessor($route, $parameters) {
|
||||
protected function getMockProcessor($route_name, $route, $parameters) {
|
||||
$processor = $this->getMock('Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface');
|
||||
$processor->expects($this->once())
|
||||
->method('processOutbound')
|
||||
->with($route, $parameters);
|
||||
->with($route_name, $route, $parameters);
|
||||
|
||||
return $processor;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue