6

我想为我在 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()),我有一个类将特权级别附加到所有控制器中的所有操作。UserController->deleteUserAction()如果检查发生在之前执行但在基本控制器中我无权访问 $this的父控制器(例如 BaseController 的构造函数)中,检查将非常有效。我已经尝试过选民和 ACL,但对我的情况没有帮助。提前致谢。

4

2 回答 2

2

我认为第二个是创建自己的类并在其中使用通用功能的最佳方式。

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

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

于 2017-03-30T05:04:43.130 回答
0

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

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

于 2017-03-30T14:08:18.260 回答