Symfony2 FOSUserBundle - 针对不同类型的用户的不同注册操作

时间:2014-02-06 12:29:34

标签: symfony fosuserbundle user-registration

我在symfony2中很新,我在项目中使用FOSUserBundle来管理用户。 我有一种情况,我必须创建不同类型的用户,这将需要不同的控制器操作/视图模板。我的想法是扩展FOSUserBundle的寄存器功能并传递一个参数,该参数将决定哪种用户将是创建。 例如,如果我去注册/候选人,它将导致一个新的候选类型用户,但如果我去注册/公司我会得到一个公司用户。 有了这个想法,我可以实现显示2种不同的形式(formtype),但我被困在控制器端,如何将类型参数传递给动作控制器,并确认控制器。 我不确定这个想法是否可行,所以任何帮助都会受到赞赏,或者如果有更专业的解决方案请与我分享。 如果我的例子不清楚,我可以提供代码片段。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

处理不同类型的用户,您应该使用此捆绑包:https://github.com/PUGX/PUGXMultiUserBundle

答案 1 :(得分:0)

我为我的问题找到了一个非常简单的解决方案:

在注册路线中添加参数:

<route id="fos_user_registration_register" pattern="/{utype}">
    <default key="_controller">FOSUserBundle:Registration:register</default>
    <default key="utype"></default>
</route>

所以在控制器中我可以在一个条件中使用这个参数来决定我需要哪种注册类型:

//.....
$regtype = $request->get('utype');
if ($regtype ==='candidate')
    $type = 'candidateform';
if ($regtype ==='company')
    $type = 'companyform';

if (!empty($type))
    $formFactory->setType($type);
//.....

if ($form->isValid()) {
//....
if ($regtype === 'candidate'){
//...
}
if ($regtype === 'company'){
//..
}

通过这种方式,我可以控制表单呈现,也可以控制动作。

相关问题