我想为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没有人帮助我的情况。 提前谢谢。
答案 0 :(得分:2)
我认为第二个是创建自己的类并在其中使用常用函数的最佳方法。
如果你想添加控制器的一些常用功能,那么将它添加到Symfony默认控制器中是不正确的方法,而是可以创建BaseController
并使用BaseController
扩展所有控制器和你的BaseController should extends Controller
。
通过这种方式,symfony的默认控制器保持不变。
答案 1 :(得分:0)
只需使用服务控制器......共享: