我正在使用 fos 用户包和 pugx 多用户包。
我已经阅读了所有文档并且我是 Symfony 的新手。
在 pugx 多用户包中,每个点都有一个示例,但有一个:成功注册。
这是我的代码:
class RegistrationController extends BaseController
{
public function registerAction(Request $request)
{
$response = parent::registerAction($request);
return $response;
}
public function registerTeacherAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('MyBundle\Entity\PersonTeacher');
}
public function registerStudentAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('MyBundle\Entity\PersonStudent');
}
}
问题出在
->get('pugx_multi_user.registration_manager')
返回 经理 .在 fos user overring controllers help ,他们得到一个 form
或 form.handler
.我很难将那些与 pugx_multi_user 管理器“联系起来”。我应该在
registerTeacherAction()
中放入什么代码为教师设置角色,并在 registerStudentAction()
为成功注册的学生设置角色?
最佳答案
解决方案 1(Doctrine 监听器/订阅者)
您可以轻松添加教义 prePersist
listener/subscriber在持久化之前,根据它们的类型将角色/组添加到您的实体。
听者
namespace Acme\YourBundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Acme\YourBundle\Entity\Student;
class RoleListener
{
public function prePersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
$entityManager = $args->getEntityManager();
// check for students, teachers, whatever ...
if ($entity instanceof Student) {
$entity->addRole('ROLE_WHATEVER');
// or
$entity->addGroup('students');
// ...
}
// ...
}
}
服务配置
# app/config/config.yml or load inside a bundle extension
services:
your.role_listener:
class: Acme\YourBundle\EventListener\RoleListener
tags:
- { name: doctrine.event_listener, event: prePersist }
解决方案 2(Doctrine LifeCycle 回调):
使用 lifecycle callbacks您可以将角色/组操作直接集成到您的实体中。
/**
* @ORM\Entity()
* @ORM\HasLifecycleCallbacks()
*/
class Student
{
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->addRole('ROLE_WHATEVER');
$this->addGroup('students');
}
解决方案 3(事件调度程序):
为 "fos_user.registration.success" 注册事件监听器/订阅者事件。
How to create an event listener/EventDispatcher成分。
关于symfony - 注册成功后如何分配角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19321146/