我是Symfony的新手,我正在尝试实施仅适用于invitation的注册表单 但是这可以为两个不同的角色重定向两种不同的形式。
实际上,如果我发送USER_TYPE1角色的邀请,则客户端只能注册USER_TYPE1,如果我发送USER_TYPE2的邀请,则客户端只能注册USER_TYPE2(当然,还会指定相应的角色)。
有可能吗?
提前感谢您的帮助
更新:
我想要两种不同的形式,因为一个用户将被允许更新文件,但也必须设置他的位置和其他重要设置。第二个用户只允许下载第一类用户上传的文件,他的个人资料需要完全不同的信息。
答案 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(您希望为该人提供的角色)保留一个令牌。