8000 Allow a shortcut for UUID when defining requirements · symfony/symfony@a90dca6 · GitHub
[go: up one dir, main page]

Skip to content

Commit a90dca6

Browse files
committed
Allow a shortcut for UUID when defining requirements
1 parent 7fd5a02 commit a90dca6

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/Symfony/Component/Routing/Route.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,7 @@ public function setRequirements(array $requirements)
470470
public function addRequirements(array $requirements)
471471
{
472472
foreach ($requirements as $key => $regex) {
473+
$regex = $this->convertUuidRegex($regex);
473474
$this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
474475
}
475476
$this->compiled = null;
@@ -511,6 +512,7 @@ public function hasRequirement($key)
511512
*/
512513
public function setRequirement($key, $regex)
513514
{
515+
$regex = $this->convertUuidRegex($regex);
514516
$this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
515517
$this->compiled = null;
516518

@@ -585,4 +587,20 @@ private function sanitizeRequirement($key, $regex)
585587

586588
return $regex;
587589
}
590+
591+
/**
592+
* Convert uuid placeholders to regular expressions.
593+
*
594+
* @param string $regex
595+
*
596+
* @return string
597+
*/
598+
private function convertUuidRegex($regex)
599+
{
600+
if ($regex === '\uuid') {
601+
$regex = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}';
602+
}
603+
604+
return $regex;
605+
}
588606
}

src/Symfony/Component/Routing/Tests/RouteTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ public function testRequirements()
110110
$route->addRequirements(array('bar' => '\d+'));
111111
$this->assertEquals($route, $route->addRequirements(array()), '->addRequirements() implements a fluent interface');
112112
$this->assertEquals(array('foo' => '\d+', 'bar' => '\d+'), $route->getRequirements(), '->addRequirement() keep previous requirements');
113+
114+
$route->setRequirements(array('foo' => '\uuid'));
115+
$this->assertEquals(array('foo' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'), $route->getRequirements(), '->addRequirements() converts \uuid4');
113116
}
114117

115118
public function testRequirement()
@@ -119,6 +122,9 @@ public function testRequirement()
119122
$route->setRequirement('foo', '^\d+$');
120123
$this->assertEquals('\d+', $route->getRequirement('foo'), '->setRequirement() removes ^ and $ from the path');
121124
$this->assertTrue($route->hasRequirement('foo'), '->hasRequirement() return true if requirement is set');
125+
126+
$route->setRequirement('foo', '\uuid');
127+
$this->assertEquals(array('foo' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'), $route->getRequirements(), '->addRequirement() converts \uuid4');
122128
}
123129

124130
/**

0 commit comments

Comments
 (0)
0