я создаю сервис, но он не работает
services: redirectionListener: class: Front\EcommerceBundle\Listener\RedirectionListener arguments: ["@service_container","@session"] tags: - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
и это мой класс
namespace Front\EcommerceBundle\Listener; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpKernel\Event\GetResponseEvent; class RedirectionListener { public function __construct(ContainerBuilder $container, Session $session) { $this->session = $session; $this->router = $container->get('router'); $this->securityContext = $container->get('security.context'); } public function onKernelRequest(GetResponseEvent $event) { $route = $event->getRequest()->attributes->get('_route'); if ($route == 'livraison' || $route == 'validation') { if ($this->session->has('panier')) { if (count($this->session->get('panier')) == 0) $event->setResponse(new RedirectResponse($this->router->generate('panier'))); } if (!is_object($this->securityContext->getToken()->getUser())) { $this->session->getFlashBag()->add('notification','Vous devez vous identifier'); $event->setResponse(new RedirectResponse($this->router->generate('fos_user_security_login'))); } } } }
ServiceNotFoundException в строке Container.php 268: Вы запросили несуществующий сервис "security.context".
Служба security.context
была устарела в версии 2.6 и разбилась на две новые службы: security.authorization_checker
и security.token_storage
.
Некоторое использование из предыдущей версии фреймворка:
// Symfony 2.5 $user = $this->get('security.context')->getToken()->getUser(); // Symfony 2.6 $user = $this->get('security.token_storage')->getToken()->getUser(); // Symfony 2.5 if (false === $this->get('security.context')->isGranted('ROLE_ADMIN')) { ... } // Symfony 2.6 if (false === $this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) { ... }
Дополнительная информация в этом объявлении
Надеюсь, что эта помощь