Issue #2346283 by damiankloip: Add route name parameter to OutboundRouteProcessorInterface.

8.0.x
catch 2014-10-01 10:53:56 +02:00
parent a21acb3b7d
commit de5830d665
7 changed files with 25 additions and 20 deletions

View File

@ -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.

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -44,7 +44,7 @@ class NullGenerator extends UrlGenerator {
/**
* {@inheritdoc}
*/
protected function processRoute(Route $route, array &$parameters) {
protected function processRoute($name, Route $route, array &$parameters) {
}
/**

View File

@ -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);
}
/**

View File

@ -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));
}
}

View File

@ -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;
}