Symfony2 FOSUserBundle — разные регистрационные действия для разных типов пользователей

Я новичок в symfony2 и использую FOSUserBundle в своем проекте для управления пользователями. У меня возникла ситуация, когда мне нужно создать разные типы пользователей, которым потребуются разные действия/шаблоны представления контроллера. Моя идея состояла в том, чтобы расширить функциональность регистрации FOSUserBundle и передать параметр, который будет решать, какой тип пользователя будет созданный. Например, если я перейду к регистрации/кандидату, это приведет к новому пользователю типа кандидата, но если я перейду к регистрации/компании, я получу пользователя компании. С этой идеей я мог бы реализовать отображение двух разных форм (formtype), но я застрял на стороне контроллера, как передать параметр типа контроллеру действий и подтвердить контроллер. Я не уверен, что эта идея может сработать, поэтому любая помощь будет оценена по достоинству, или, если есть более профессиональное решение, поделитесь со мной. Если мой пример не ясен, я могу предоставить фрагменты кода.

Заранее спасибо.


person Barni    schedule 06.02.2014    source источник


Ответы (2)


Для работы с разными типами пользователей вы должны использовать этот пакет: https://github.com/PUGX/PUGXMultiUserBundle

person hizbul25    schedule 06.02.2014
comment
Спасибо за ответ, но я нашел другое решение, более простое в моем случае. Просто я добавил пользовательский var к моему регистрационному маршруту, который будет решать, какой тип регистрации мне нужен. - person Barni; 10.02.2014
comment
Пожалуйста, пришлите мне свой код или способ решения этой проблемы. Электронная почта: [email protected] - person hizbul25; 10.02.2014

Я нашел довольно простое решение для моего вопроса:

Добавление параметра в маршрут регистрации:

<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'){
//..
}

Таким образом, я могу контролировать рендеринг формы, а также действие.

person Barni    schedule 11.02.2014