Vous avez demandé inexistante de services de sécurité".cadre"
j'ai créer le service, mais il ne fonctionne pas
services:
redirectionListener:
class: FrontEcommerceBundleListenerRedirectionListener
arguments: ["@service_container","@session"]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
et cela ma classe
namespace FrontEcommerceBundleListener;
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentHttpFoundationSessionSession;
use SymfonyComponentHttpFoundationRedirectResponse;
use SymfonyComponentHttpKernelEventGetResponseEvent;
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 dans un Conteneur.php line 268: vous avez demandé inexistante de services de sécurité".cadre."
22
demandé sur
Matteo
2016-04-10 18:44:50
2 réponses
security.context
le service a été déprécié dans le 2.6 et divisé en deux nouveaux services: security.authorization_checker
et security.token_storage
.
Une utilisation différente de la version précédente du cadre:
// 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')) { ... }
Espérons que cette aide
42
répondu
Matteo
2016-04-10 17:38:08
exemple Suivant:
/*Symfony 4.1.3*/
$user = $this->get('security.token_storage')->getToken()->getUser();
echo $user->getId(); // USER ID SESSION
1
répondu
Charles Fournier
2018-08-23 18:46:41