Tengo un servicio que busca datos para una página, pero si esos datos no se encuentran, debe redireccionar a la página de inicio. Por mi vida, no puedo entender cómo hacer esto en Sf2. Hay tantas formas diferentes de trabajar con servicios y enrutadores, pero ninguno parece funcionar.Redirigir desde un servicio en Symfony2
namespace Acme\SomeBundle\Services;
use Acme\SomeBundle\Entity\Node;
use \Doctrine\ORM\EntityManager;
use \Symfony\Component\HttpKernel\Event\GetResponseEvent;
use \Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use \Symfony\Bundle\FrameworkBundle\Routing\Router;
use \Symfony\Component\Routing\Generator\UrlGenerator;
use Symfony\Component\HttpFoundation\RedirectResponse;
class NodeFinder
{
private $em;
private $router;
public function __construct(EntityManager $em, Router $router)
{
$this->em = $em;
$this->router = $router;
}
public function getNode($slug)
{
$node = $this->em->getRepository('SomeBundle:Node')->findOneBy(array('slug' => $slug));
if (!$node) { //if no node found
return $this->router->redirect('homepage', array(), true);
}
}
Gracias. El problema es que utilizo este servicio en muchos lugares, por lo que hay mucha duplicación de código haciendo la redirección en el controlador. – Acyra
Está bien, debería hacer cualquier redirección en su controlador, no en su servicio. –
@ChrisMcKinnel porque? Tengo muchas veces 'si el usuario no está conectado, redirigir a la página de inicio de sesión' realmente? Tengo que duplicar esto 100 veces? malo malo malo – Toskan