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

Ade*_*ayo 6 php controller abstract-base-class symfony

我想为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
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我的一个控制器

    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
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

Mau*_*iya 2

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

如果你想添加控制器的一些常见功能,那么将其添加到 Symfony 默认控制器中并不是正确的方法,相反,你可以BaseController使用BaseControllerBaseController should extends Controller.

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