Dies ist die Lösung, die ich endlich umgesetzt werden, unterscheidet sich aus dem Vorschlag von Elsässer, weil ich keinen Parameter in der service.yml verwenden. Ist nur eine Frage des Geschmacks, sonst nichts.
in app/config/services.yml
services:
app.request_listener:
class: AppBundle\EventListener\RequestListener
arguments: ["@doctrine.orm.entity_manager","@templating"]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelController }
in src/AppBundle/Eventlistener/RequestListener.php
namespace AppBundle\EventListener;
use \Symfony\Component\HttpKernel\Event\GetResponseEvent;
use \Symfony\Component\HttpFoundation\Response;
class RequestListener
{
private $em;
private $templating;
public function __construct($em, $templating)
{
$this->em = $em;
$this->templating = $templating;
}
public function onKernelController(GetResponseEvent $event)
{
if (!$this->configKey = $this->em->getRepository('AppBundle:Config')->getconfig('web_enabled'))
$event->setResponse($this->templating->renderResponse('default/construction.html.twig'));
}
}
und in src/AppBundle/Repository/ConfigRepository.php Erläuterung des getconfig Methode:
namespace AppBundle\Repository;
class ConfigRepository extends \Doctrine\ORM\EntityRepository
{
public function getconfig($config_name)
{
$config = $this->getEntityManager()
->createQuery('SELECT p.config_value FROM AppBundle:Config p WHERE p.config_name = :config_name')
->setParameter('config_name', $config_name)
->getResult();
if (sizeof($config)){
return $config[0]['config_value'];
}else{
return false;
}
}
}
Hoffe, das hilft.
Abfangbare Fatal Error: Argument 1 bis AppBundle geben \ Eventlistener \ RequestListener :: onKernelController() muss eine Instanz von Symfony \ Component sein \ HttpKernel \ Ereignis \ GetResponseEvent, Instanz von Symfony \ Component \ HttpKernel \ Ereignis \ FilterControllerEvent – Carlos
gegeben das ist was ich bekomme. Ich sehe keinen Hinweis auf FilterControllerEvent. Das hat mich verloren. – Carlos
Dank Elsässisch. Ich werde hier die Lösung posten, die ich mit Ihrer Einschätzung umgesetzt habe. – Carlos