changed the routing to accept a single _controller argument instead of _bundle, _controller, and _action (the _controller is the : separated representation of a controller - this is more coherent with other part of the framework)
This commit is contained in:
parent
9005efaa17
commit
fd331bac18
@ -43,7 +43,7 @@ class ControllerLoader
|
|||||||
{
|
{
|
||||||
$request = $this->container->getRequestService();
|
$request = $this->container->getRequestService();
|
||||||
|
|
||||||
list($path['_bundle'], $path['_controller'], $path['_action']) = explode(':', $controller);
|
$path['_controller'] = $controller;
|
||||||
|
|
||||||
$subRequest = $request->duplicate($query, null, $path);
|
$subRequest = $request->duplicate($query, null, $path);
|
||||||
|
|
||||||
@ -58,15 +58,15 @@ class ControllerLoader
|
|||||||
{
|
{
|
||||||
$request = $event->getParameter('request');
|
$request = $event->getParameter('request');
|
||||||
|
|
||||||
if (!($bundle = $request->path->get('_bundle')) || !($controller = $request->path->get('_controller')) || !($action = $request->path->get('_action'))) {
|
if (!$controller = $request->path->get('_controller')) {
|
||||||
if (null !== $this->logger) {
|
if (null !== $this->logger) {
|
||||||
$this->logger->err(sprintf('Unable to look for the controller as some mandatory parameters are missing (_bundle: %s, _controller: %s, _action: %s)', isset($bundle) ? var_export($bundle, true) : 'NULL', isset($controller) ? var_export($controller, true) : 'NULL', isset($action) ? var_export($action, true) : 'NULL'));
|
$this->logger->err('Unable to look for the controller as the _controller parameter is missing');
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$controller = $this->findController($bundle, $controller, $action);
|
$controller = $this->findController($controller);
|
||||||
$controller[0]->setRequest($request);
|
$controller[0]->setRequest($request);
|
||||||
|
|
||||||
$r = new \ReflectionObject($controller[0]);
|
$r = new \ReflectionObject($controller[0]);
|
||||||
@ -80,8 +80,9 @@ class ControllerLoader
|
|||||||
/**
|
/**
|
||||||
* @throws \InvalidArgumentException|\LogicException If controller can't be found
|
* @throws \InvalidArgumentException|\LogicException If controller can't be found
|
||||||
*/
|
*/
|
||||||
public function findController($bundle, $controller, $action)
|
public function findController($controller)
|
||||||
{
|
{
|
||||||
|
list($bundle, $controller, $action) = explode(':', $controller);
|
||||||
$class = null;
|
$class = null;
|
||||||
$logs = array();
|
$logs = array();
|
||||||
foreach (array_keys($this->container->getParameter('kernel.bundle_dirs')) as $namespace) {
|
foreach (array_keys($this->container->getParameter('kernel.bundle_dirs')) as $namespace) {
|
||||||
|
@ -25,19 +25,15 @@ use Symfony\Foundation\LoggerInterface;
|
|||||||
class ExceptionHandler
|
class ExceptionHandler
|
||||||
{
|
{
|
||||||
protected $container;
|
protected $container;
|
||||||
protected $bundle;
|
|
||||||
protected $controller;
|
protected $controller;
|
||||||
protected $action;
|
|
||||||
protected $logger;
|
protected $logger;
|
||||||
|
|
||||||
public function __construct(ContainerInterface $container, LoggerInterface $logger = null, $bundle, $controller, $action)
|
public function __construct(ContainerInterface $container, LoggerInterface $logger = null, $controller)
|
||||||
{
|
{
|
||||||
$this->container = $container;
|
$this->container = $container;
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
|
|
||||||
$this->bundle = $bundle;
|
|
||||||
$this->controller = $controller;
|
$this->controller = $controller;
|
||||||
$this->action = $action;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function register()
|
public function register()
|
||||||
@ -58,9 +54,7 @@ class ExceptionHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
$parameters = array(
|
$parameters = array(
|
||||||
'_bundle' => $this->bundle,
|
|
||||||
'_controller' => $this->controller,
|
'_controller' => $this->controller,
|
||||||
'_action' => $this->action,
|
|
||||||
'exception' => $exception,
|
'exception' => $exception,
|
||||||
'originalRequest' => $event->getParameter('request'),
|
'originalRequest' => $event->getParameter('request'),
|
||||||
'logs' => $this->container->hasService('zend.logger.writer.debug') ? $this->container->getService('zend.logger.writer.debug')->getLogs() : array(),
|
'logs' => $this->container->hasService('zend.logger.writer.debug') ? $this->container->getService('zend.logger.writer.debug')->getLogs() : array(),
|
||||||
|
@ -59,7 +59,7 @@ class RequestParser
|
|||||||
));
|
));
|
||||||
$this->container->setParameter('request.base_path', $request->getBasePath());
|
$this->container->setParameter('request.base_path', $request->getBasePath());
|
||||||
|
|
||||||
if ($request->path->has('_bundle')) {
|
if ($request->path->has('_controller')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.symfony-project.org/schema/routing http://www.symfony-project.org/schema/routing/routing-1.0.xsd">
|
xsi:schemaLocation="http://www.symfony-project.org/schema/routing http://www.symfony-project.org/schema/routing/routing-1.0.xsd">
|
||||||
|
|
||||||
<route id="_internal" pattern="/:_bundle/:_controller/:_action.:_format" />
|
<route id="_internal" pattern="/:_controller.:_format" />
|
||||||
</routes>
|
</routes>
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
xsi:schemaLocation="http://www.symfony-project.org/schema/routing http://www.symfony-project.org/schema/routing/routing-1.0.xsd">
|
xsi:schemaLocation="http://www.symfony-project.org/schema/routing http://www.symfony-project.org/schema/routing/routing-1.0.xsd">
|
||||||
|
|
||||||
<route id="homepage" pattern="/">
|
<route id="homepage" pattern="/">
|
||||||
<default key="_bundle">WebBundle</default>
|
<default key="_controller">WebBundle:Default:index</default>
|
||||||
<default key="_controller">Default</default>
|
|
||||||
<default key="_action">index</default>
|
|
||||||
</route>
|
</route>
|
||||||
</routes>
|
</routes>
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
homepage:
|
homepage:
|
||||||
pattern: /
|
pattern: /
|
||||||
defaults: { _bundle: WebBundle, _controller: Default, _action: index }
|
defaults: { _controller: WebBundle:Default:index }
|
||||||
|
Reference in New Issue
Block a user