Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony:在基本控制器中设置响应_Php_Symfony - Fatal编程技术网

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()
    {
    }
}