如何为我的所有symfony控制器创建基类

时间:2017-03-30 01:16:36

标签: php symfony controller abstract-base-class

我想为Symfony中的所有控制器创建一个基本控制器类,我是Symfony的新手,所以不要对愚蠢的问题生气。我问这个问题因为我不能做这样的事情

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    class AbstractController extends Controller
    {
        public function __construct()
        {
            //...... check access level
            $user = $this->getUser(); //This is not working, I don't have access to the Controller(the base class) properties
        }
    }

现在我的一个控制器

    class UserController extends AbstractController
    {
        public deleteUserAction(Request $request)
        {
          var_dump($this);// this will dump an empty class that is not instance of Symfony\Bundle\FrameworkBundle\Controller\Controller
          //.... delete user
        }
    }

最好的方法是什么?请... 编辑.... 我真正想做的是检查用户权限级别是否足以访问特定控制器(例如UserController)中的特定操作(例如deleteUserAction()),我有一个类将权限级别附加到所有控制器中的所有操作。如果它发生在父{1}}之前执行的父控制器(例如BaseController的构造函数)中,那么检查将非常有效,但在基本控制器中我无法访问$ this。 我试过选民和ACL没有人帮助我的情况。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

我认为第二个是创建自己的类并在其中使用常用函数的最佳方法。

如果你想添加控制器的一些常用功能,那么将它添加到Symfony默认控制器中是不正确的方法,而是可以创建BaseController并使用BaseController扩展所有控制器和你的BaseController should extends Controller

通过这种方式,symfony的默认控制器保持不变。

答案 1 :(得分:0)

只需使用服务控制器......共享:

http://symfony.com/doc/current/controller/service.html