不同角色的不同注册表单。 FOSUserBundle

时间:2013-12-17 17:13:09

标签: forms symfony registration roles fosuserbundle

我是Symfony的新手,我正在尝试实施仅适用于invitation的注册表单 但是这可以为两个不同的角色重定向两种不同的形式。

实际上,如果我发送USER_TYPE1角色的邀请,则客户端只能注册USER_TYPE1,如果我发送USER_TYPE2的邀请,则客户端只能注册USER_TYPE2(当然,还会指定相应的角色)。

有可能吗?

提前感谢您的帮助

更新:

我想要两种不同的形式,因为一个用户将被允许更新文件,但也必须设置他的位置和其他重要设置。第二个用户只允许下载第一类用户上传的文件,他的个人资料需要完全不同的信息。

1 个答案:

答案 0 :(得分:2)

我没有足够的声望要求提供详细信息,但有一点在你的问题中不明确:为什么你需要2种不同的形式?在你的问题中,你提到了两个不同的角色,但为什么你需要两种不同的形式?如果你真的需要两种不同的形式,那么你应该先: - 创建新的表单类型 - 创建一个新视图(树枝)

就像鲍里斯建议的那样,我会为每个发送的邀请保留一些令牌,并将电子邮件地址和角色关联起来。然后修改您的注册路由,以便您可以在其中传递令牌,如下所示:

register:
    pattern:   /signup/{token}
    defaults:  { _controller: MyBundle:Registration:signup }

在控制器的注册操作中,您创建了正确的表单类型并显示相应的树枝,具体取决于与您刚刚获得的令牌关联的ROLE。处理POST时,再次检查令牌以查看它是否与电子邮件地址匹配,并在创建用户时分配正确的ROLE。

public function signupAction($token) {
    // 1. Get the Token entity matching the $token variable
    // 2. Create the correct form type
    // 3. Display the correct twig for GET, assign correct ROLE to new User for POST
}

但你不能按原样使用FOSUserBundle。您将不得不覆盖注册过程。您可以阅读有关该文档的FOSUserBundle文档。

可以肯定的是,对于您发送的每个邀请,您都应该使用匹配的电子邮件地址和ROLE(您希望为该人提供的角色)保留一个令牌。