我需要将URL Route参数传递到构造中,以对特定类的所有路由执行基本的安全检查,但是我不知道如何将route参数传递到Controller构造函数中
简化代码如下:
/**
* @Route("/stores/{store_id}", name="admin_stores",
*/
class ManageStores extends AbstractController
{
var $store;
/**
* ManageStores constructor.
* @param $store_id
* @param UserInterface $user
*/
public function __construct($store_id, UserInterface $user)
{
// validation here using parsed
if ( !$user->canManageStore( $store_id ) )
return $this->redirectToRoute('login_page');
// else: continues on to relevant routes in controller
}
}
答案 0 :(得分:0)
将路由参数(通过Request
对象)传递给控制器操作,而不是构造函数。在配置和构建容器时,这些值未知。
您需要按操作检查访问权限,尽管您可以使用访问控制和选民来对此进行一些捷径(这有些先进,但上面有documentation,还有一些视频-walk-throughs也可以在设置它们时使用。)