'web_enabled'키가있는 구성 테이블이 있습니다. 요청한 경로를 표시하고 싶지만 false 일 경우 '유지 관리중인 사이트'페이지를 표시하고 싶습니다. 분명히이 점검은 어떤 루트 액션보다 먼저 수행되어야합니다.Symfony 3.1 데이터베이스에 대한 액세스 권한이있는 수신자
나는 이벤트와 리스너에 대해 읽었지 만 교리와 템플릿에 대한 액세스를 구현하는 방법을 알지 못합니다.
도움 주셔서 감사합니다.
# src/AppBundle/Ressources/config/services.yml
services:
app.request_listener:
class: AppBundle\EventListener\RequestListener
arguments: ["%web_enabled%","@doctrine.orm.entity_manager","@templating"]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
리스너 :
namespace AppBundle\EventListener;
use \Symfony\Component\HttpKernel\Event\GetResponseEvent;
use \Symfony\Component\HttpFoundation\Response;
class RequestListener
{
private $configKey;
private $em;
private $templating;
public __construct($configKey, $em, $templating)
{
$this->configKey = $configKey;
$this->em = $em;
$this->templating = $templating;
}
public function onKernelRequest(GetResponseEvent $event)
{
if(!$this->configKey){
$var = $this->em->getRepository('AppBundle:MyEntity')->findOne(1);
$event->setResponse($this->templating->renderResponse('my_template.html.twig',array('var'=>$var));
}
}
}
가 잡아낼 치명적인 오류 : AppBundle에 전달 된 인수 1 \의 EventListener \ RequestListener :: onKernelController을() 심포니 \ 구성 요소의 인스턴스 여야합니다 \ HttpKernel은 \ 이벤트 \ GetResponseEvent, 심포니 \ 구성 요소의 인스턴스는 \ HttpKernel \ 이벤트 \ FilterControllerEvent는 – Carlos
을 그 것 주어진 내가 얻는 것. FilterControllerEvent에 대한 참조가 보이지 않습니다. ??? 이것은 나를 잃어 버렸다. – Carlos
감사합니다. 알자스. 나는 당신의 평가와 함께 구현 한 솔루션을 여기에 올릴 것입니다. – Carlos