Merge branch 'master' of github.com:fabpot/symfony
* 'master' of github.com:fabpot/symfony: [Console] added __get() to Command to have shorter and more readable code in commands [Console] fixed default message layout [Routing] added requirements checking when generating a route [Routing] changed matching to only check for method if it is available in the context [Routing] fixed typo
This commit is contained in:
commit
e17c43d7b2
@ -255,7 +255,7 @@ class Application
|
|||||||
|
|
||||||
foreach ($this->definition->getOptions() as $option)
|
foreach ($this->definition->getOptions() as $option)
|
||||||
{
|
{
|
||||||
$messages[] = sprintf(' %-24s %s %s',
|
$messages[] = sprintf(' %-29s %s %s',
|
||||||
'<info>--'.$option->getName().'</info>',
|
'<info>--'.$option->getName().'</info>',
|
||||||
$option->getShortcut() ? '<info>-'.$option->getShortcut().'</info>' : ' ',
|
$option->getShortcut() ? '<info>-'.$option->getShortcut().'</info>' : ' ',
|
||||||
$option->getDescription()
|
$option->getDescription()
|
||||||
|
@ -423,6 +423,20 @@ class Command
|
|||||||
return $this->application->getHelperSet()->get($name);
|
return $this->application->getHelperSet()->get($name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a helper instance by name.
|
||||||
|
*
|
||||||
|
* @param string $name The helper name
|
||||||
|
*
|
||||||
|
* @return mixed The helper value
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException if the helper is not defined
|
||||||
|
*/
|
||||||
|
public function __get($name)
|
||||||
|
{
|
||||||
|
return $this->application->getHelperSet()->get($name);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a text representation of the command.
|
* Returns a text representation of the command.
|
||||||
*
|
*
|
||||||
|
@ -59,12 +59,13 @@ class PhpGeneratorDumper extends GeneratorDumper
|
|||||||
|
|
||||||
$variables = str_replace("\n", '', var_export($compiledRoute->getVariables(), true));
|
$variables = str_replace("\n", '', var_export($compiledRoute->getVariables(), true));
|
||||||
$defaults = str_replace("\n", '', var_export($route->getDefaults(), true));
|
$defaults = str_replace("\n", '', var_export($route->getDefaults(), true));
|
||||||
|
$requirements = str_replace("\n", '', var_export($compiledRoute->getRequirements(), true));
|
||||||
$tokens = str_replace("\n", '', var_export($compiledRoute->getTokens(), true));
|
$tokens = str_replace("\n", '', var_export($compiledRoute->getTokens(), true));
|
||||||
|
|
||||||
$methods[] = <<<EOF
|
$methods[] = <<<EOF
|
||||||
protected function get{$name}RouteInfo()
|
protected function get{$name}RouteInfo()
|
||||||
{
|
{
|
||||||
return array($variables, array_merge(\$this->defaults, $defaults), $tokens);
|
return array($variables, array_merge(\$this->defaults, $defaults), $requirements, $tokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@ -82,9 +83,9 @@ EOF
|
|||||||
throw new \InvalidArgumentException(sprintf('Route "%s" does not exist.', \$name));
|
throw new \InvalidArgumentException(sprintf('Route "%s" does not exist.', \$name));
|
||||||
}
|
}
|
||||||
|
|
||||||
list(\$variables, \$defaults, \$tokens) = \$this->\$method();
|
list(\$variables, \$defaults, \$requirements, \$tokens) = \$this->\$method();
|
||||||
|
|
||||||
return \$this->doGenerate(\$variables, \$defaults, \$tokens, \$parameters, \$name, \$absolute);
|
return \$this->doGenerate(\$variables, \$defaults, \$requirements, \$tokens, \$parameters, \$name, \$absolute);
|
||||||
}
|
}
|
||||||
|
|
||||||
$methods
|
$methods
|
||||||
|
@ -38,7 +38,7 @@ class UrlGenerator implements UrlGeneratorInterface
|
|||||||
public function __construct(RouteCollection $routes, array $context = array(), array $defaults = array())
|
public function __construct(RouteCollection $routes, array $context = array(), array $defaults = array())
|
||||||
{
|
{
|
||||||
$this->routes = $routes;
|
$this->routes = $routes;
|
||||||
$this->context = array_merge(array('base_url', ''), $context);
|
$this->context = array_merge(array('base_url' => ''), $context);
|
||||||
$this->defaults = $defaults;
|
$this->defaults = $defaults;
|
||||||
$this->cache = array();
|
$this->cache = array();
|
||||||
}
|
}
|
||||||
@ -64,10 +64,10 @@ class UrlGenerator implements UrlGeneratorInterface
|
|||||||
$this->cache[$name] = $route->compile();
|
$this->cache[$name] = $route->compile();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->doGenerate($this->cache[$name]->getVariables(), $route->getDefaults(), $this->cache[$name]->getTokens(), $parameters, $name, $absolute);
|
return $this->doGenerate($this->cache[$name]->getVariables(), $route->getDefaults(), $route->getRequirements(), $this->cache[$name]->getTokens(), $parameters, $name, $absolute);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function doGenerate($variables, $defaults, $tokens, $parameters, $name, $absolute)
|
protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $absolute)
|
||||||
{
|
{
|
||||||
$defaults = array_merge($this->defaults, $defaults);
|
$defaults = array_merge($this->defaults, $defaults);
|
||||||
$tparams = array_merge($defaults, $parameters);
|
$tparams = array_merge($defaults, $parameters);
|
||||||
@ -86,6 +86,12 @@ class UrlGenerator implements UrlGeneratorInterface
|
|||||||
{
|
{
|
||||||
if (false === $optional || !isset($defaults[$token[3]]) || (isset($parameters[$token[3]]) && $parameters[$token[3]] != $defaults[$token[3]]))
|
if (false === $optional || !isset($defaults[$token[3]]) || (isset($parameters[$token[3]]) && $parameters[$token[3]] != $defaults[$token[3]]))
|
||||||
{
|
{
|
||||||
|
// check requirement
|
||||||
|
if (isset($requirements[$token[3]]) && !preg_match('#^'.$requirements[$token[3]].'$#', $tparams[$token[3]]))
|
||||||
|
{
|
||||||
|
throw new \InvalidArgumentException(sprintf('Parameter "%s" for route "%s" must match "%s" ("%s" given).', $token[3], $name, $requirements[$token[3]], $tparams[$token[3]]));
|
||||||
|
}
|
||||||
|
|
||||||
$url = $token[1].urlencode($tparams[$token[3]]).$url;
|
$url = $token[1].urlencode($tparams[$token[3]]).$url;
|
||||||
$optional = false;
|
$optional = false;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ class UrlMatcher implements UrlMatcherInterface
|
|||||||
$compiledRoute = $route->compile();
|
$compiledRoute = $route->compile();
|
||||||
|
|
||||||
// check HTTP method requirement
|
// check HTTP method requirement
|
||||||
if (!isset($this->context['method']) || (($req = $route->getRequirement('_method')) && !in_array(strtolower($this->context['method']), array_map('strtolower', (array) $req))))
|
if (isset($this->context['method']) && (($req = $route->getRequirement('_method')) && !in_array(strtolower($this->context['method']), array_map('strtolower', (array) $req))))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user