를 autowire하기 할 수 없습니다
심포니 4 : 내 이벤트 리스너에 후 UserInterface를 추가하면 이벤트 리스너는 내가 오류 다음 한 후 UserInterface
Cannot autowire service "App\EventListener\ControllerListener": argument "$user" of method "__construct()" references interface "Symfony\Component\Security\Core\User\UserInterface" but no such service exists. It cannot be auto-registered because it is from a different root namespace.
내가 다른 서비스를 무슨 일이 일어나고 있는지 모른다 잘 작동합니다. 코드를 찾고 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?
~ SRC /의 EventListener/ControllerListener.php
<?php
namespace App\EventListener;
use App\Entity\User;
use App\Entity\DailyWin;
use App\Controller\DailyWinController;
use Psr\Log\LoggerInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
class ControllerListener extends Controller implements DailyWinController
{
private $authChecker, $user, $logger;
public function __construct(UserInterface $user, AuthorizationCheckerInterface $authChecker, LoggerInterface $logger) {
$this->user = $user;
$this->authChecker = $authChecker;
$this->logger = $logger;
}
public function onKernelController(FilterControllerEvent $event) {
if ($this->authChecker->isGranted('IS_AUTHENTICATED_FULLY') === false) return;
$this->logger->warning('Inicjowanie...');
$em = $this->getDoctrine()->getManager();
$DWrep = $em->getRepository(DailyWin::class);
$userId = $this->user->getId();
$userDailyWin = $DWrep->findOneBy(['userId' => $userId]);
$this->logger->warning(print_r($userDailyWin));
if (empty($userDailyWin)) {
$currentDate = new \DateTime(date('Y-m-d', time()));
$userDailyWin = new DailyWin();
$userDailyWin->setUserId($userId);
$userDailyWin->setMultiplier(0);
$userDailyWin->setClaimed(0);
$userDailyWin->setStreak(0);
$userDailyWin->setLastLogin($currentDate);
$em->persist($userDailyWin);
$em->flush();
}
}
}
감사합니다.
그래서에 따라 예상 할 주입 한 것으로? – Cerad
@Cerad - 로그인 한 사용자 (내 타겟) – Invictus
현재 로그인 한 사용자를 얻는 방법을 찾으십시오. Controller :: getUser()를 예로 들어 보겠습니다. – Cerad