将Symfony4 @Route参数传递给控制器​​的构造

时间:2018-12-14 10:04:49

标签: routing symfony4

我需要将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


    }

}

1 个答案:

答案 0 :(得分:0)

将路由参数(通过Request对象)传递给控制器​​操作,而不是构造函数。在配置和构建容器时,这些值未知。

您需要按操作检查访问权限,尽管您可以使用访问控制和选民来对此进行一些捷径(这有些先进,但上面有documentation,还有一些视频-walk-throughs也可以在设置它们时使用。)