[WebBundle] finished the refactoring of the actions helper
This commit is contained in:
parent
3749c59041
commit
3fe83cd726
@ -5,6 +5,7 @@ namespace Symfony\Framework\WebBundle\Controller;
|
|||||||
use Symfony\Foundation\LoggerInterface;
|
use Symfony\Foundation\LoggerInterface;
|
||||||
use Symfony\Components\DependencyInjection\ContainerInterface;
|
use Symfony\Components\DependencyInjection\ContainerInterface;
|
||||||
use Symfony\Components\HttpKernel\HttpKernelInterface;
|
use Symfony\Components\HttpKernel\HttpKernelInterface;
|
||||||
|
use Symfony\Components\HttpKernel\Request;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of the Symfony framework.
|
* This file is part of the Symfony framework.
|
||||||
@ -36,6 +37,13 @@ class ControllerManager
|
|||||||
/**
|
/**
|
||||||
* Renders a Controller and returns the Response content.
|
* Renders a Controller and returns the Response content.
|
||||||
*
|
*
|
||||||
|
* Available options:
|
||||||
|
*
|
||||||
|
* * path: An array of path parameters (only when the first argument is a controller)
|
||||||
|
* * query: An array of query parameters (only when the first argument is a controller)
|
||||||
|
* * ignore_errors: true to return an empty string in case of an error
|
||||||
|
* * alt: an alternative controller to execute in case of an error (can be a controller, a URI, or an array with the controller, the path arguments, and the query arguments)
|
||||||
|
*
|
||||||
* @param string $controller A controller name to execute (a string like BlogBundle:Post:index), or a relative URI
|
* @param string $controller A controller name to execute (a string like BlogBundle:Post:index), or a relative URI
|
||||||
* @param array $options An array of options
|
* @param array $options An array of options
|
||||||
*
|
*
|
||||||
@ -43,6 +51,17 @@ class ControllerManager
|
|||||||
*/
|
*/
|
||||||
public function render($controller, array $options = array())
|
public function render($controller, array $options = array())
|
||||||
{
|
{
|
||||||
|
$options = array_merge(array(
|
||||||
|
'path' => array(),
|
||||||
|
'query' => array(),
|
||||||
|
'ignore_errors' => true,
|
||||||
|
'alt' => array(),
|
||||||
|
), $options);
|
||||||
|
|
||||||
|
if (!is_array($options['alt'])) {
|
||||||
|
$options['alt'] = array($options['alt']);
|
||||||
|
}
|
||||||
|
|
||||||
$request = $this->container->getRequestService();
|
$request = $this->container->getRequestService();
|
||||||
|
|
||||||
// controller or URI?
|
// controller or URI?
|
||||||
|
@ -3,10 +3,8 @@
|
|||||||
namespace Symfony\Framework\WebBundle\Helper;
|
namespace Symfony\Framework\WebBundle\Helper;
|
||||||
|
|
||||||
use Symfony\Components\Templating\Helper\Helper;
|
use Symfony\Components\Templating\Helper\Helper;
|
||||||
use Symfony\Components\DependencyInjection\ContainerInterface;
|
|
||||||
use Symfony\Components\OutputEscaper\Escaper;
|
use Symfony\Components\OutputEscaper\Escaper;
|
||||||
use Symfony\Components\HttpKernel\HttpKernelInterface;
|
use Symfony\Framework\WebBundle\Controller\ControllerManager;
|
||||||
use Symfony\Components\HttpKernel\Request;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of the Symfony framework.
|
* This file is part of the Symfony framework.
|
||||||
@ -26,16 +24,16 @@ use Symfony\Components\HttpKernel\Request;
|
|||||||
*/
|
*/
|
||||||
class ActionsHelper extends Helper
|
class ActionsHelper extends Helper
|
||||||
{
|
{
|
||||||
protected $container;
|
protected $manager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
* @param Constructor $container A ContainerInterface instance
|
* @param Constructor $container A ContainerInterface instance
|
||||||
*/
|
*/
|
||||||
public function __construct(ContainerInterface $container)
|
public function __construct(ControllerManager $manager)
|
||||||
{
|
{
|
||||||
$this->container = $container;
|
$this->manager = $manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,33 +52,24 @@ class ActionsHelper extends Helper
|
|||||||
/**
|
/**
|
||||||
* Returns the Response content for a given controller or URI.
|
* Returns the Response content for a given controller or URI.
|
||||||
*
|
*
|
||||||
* Available options:
|
|
||||||
*
|
|
||||||
* * path: An array of path parameters (only when the first argument is a controller)
|
|
||||||
* * query: An array of query parameters (only when the first argument is a controller)
|
|
||||||
* * ignore_errors: true to return an empty string in case of an error
|
|
||||||
* * alt: an alternative controller to execute in case of an error (can be a controller, a URI, or an array with the controller, the path arguments, and the query arguments)
|
|
||||||
*
|
|
||||||
* @param string $controller A controller name to execute (a string like BlogBundle:Post:index), or a relative URI
|
* @param string $controller A controller name to execute (a string like BlogBundle:Post:index), or a relative URI
|
||||||
* @param array $options An array of options
|
* @param array $options An array of options
|
||||||
|
*
|
||||||
|
* @see Symfony\Framework\WebBundle\Controller\ControllerManager::render()
|
||||||
*/
|
*/
|
||||||
public function render($controller, array $options = array())
|
public function render($controller, array $options = array())
|
||||||
{
|
{
|
||||||
$options = array_merge(array(
|
if (isset($options['path']))
|
||||||
'path' => array(),
|
{
|
||||||
'query' => array(),
|
$options['path'] = Escaper::unescape($options['path']);
|
||||||
'ignore_errors' => true,
|
|
||||||
'alt' => array(),
|
|
||||||
), $options);
|
|
||||||
|
|
||||||
if (!is_array($options['alt'])) {
|
|
||||||
$options['alt'] = array($options['alt']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$options['path'] = Escaper::unescape($options['path']);
|
if (isset($options['query']))
|
||||||
|
{
|
||||||
$options['query'] = Escaper::unescape($options['query']);
|
$options['query'] = Escaper::unescape($options['query']);
|
||||||
|
}
|
||||||
|
|
||||||
return $this->container->getControllerManagerService()->render($controller, $options);
|
return $this->manager->render($controller, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -81,7 +81,7 @@
|
|||||||
|
|
||||||
<service id="templating.helper.actions" class="%templating.helper.actions.class%">
|
<service id="templating.helper.actions" class="%templating.helper.actions.class%">
|
||||||
<annotation name="templating.helper" alias="actions" />
|
<annotation name="templating.helper" alias="actions" />
|
||||||
<argument type="service" id="service_container" />
|
<argument type="service" id="controller_manager" />
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="templating.loader" alias="templating.loader.filesystem" />
|
<service id="templating.loader" alias="templating.loader.filesystem" />
|
||||||
|
Reference in New Issue
Block a user