Php Symfony:在基本控制器中设置响应
您真正想要的是使用事件侦听器Php Symfony:在基本控制器中设置响应,php,symfony,Php,Symfony,您真正想要的是使用事件侦听器 <?php abstract class BaseController extends Controller { public function setContainer(ContainerInterface $container) { parent::setContainer($container); $this->containerInitialized(); } protected funct
<?php
abstract class BaseController extends Controller {
public function setContainer(ContainerInterface $container) {
parent::setContainer($container);
$this->containerInitialized();
}
protected function containerInitialized() {
if($this->getUser()->getNickName()===null){
// I need to directly returns a Response
return new Response('...');
}
}
}
class UserHomeController extends BaseController{
public function indexAction(){
}
}
现在您可以这样做:
services:
app.base_controller_subscriber:
class: AppBundle\EventListener\BaseControllerListener
arguments:
- "@security.token_storage"
tags:
- { name: kernel.event_subscriber }
对于将扩展BaseController的每个控制器,将执行BaseControllerListener::onKernelController方法。您真正想要的是使用事件侦听器
<?php
abstract class BaseController extends Controller {
public function setContainer(ContainerInterface $container) {
parent::setContainer($container);
$this->containerInitialized();
}
protected function containerInitialized() {
if($this->getUser()->getNickName()===null){
// I need to directly returns a Response
return new Response('...');
}
}
}
class UserHomeController extends BaseController{
public function indexAction(){
}
}
现在您可以这样做:
services:
app.base_controller_subscriber:
class: AppBundle\EventListener\BaseControllerListener
arguments:
- "@security.token_storage"
tags:
- { name: kernel.event_subscriber }
对于将扩展BaseController的每个控制器,将执行BaseControllerListener::onKernelController方法。如果我需要从
UserHomeController
使用$this->tokenStorage
怎么办?如果我需要从UserHomeController
使用$this->tokenStorage
怎么办?
namespace AppBundle\Controller;
// ...
class UserHomeController extends BaseController
{
public function indexAction()
{
}
}