Oli*_*ons 8 controller symfony fosuserbundle pugxmultiuserbundle
我正在使用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');
}
}
Run Code Online (Sandbox Code Playgroud)
问题是->get('pugx_multi_user.registration_manager')返回经理.在fos用户覆盖控制器帮助中,他们得到a form或a form.handler.我很难将这些与pugx_multi_user管理器"链接"起来.
我应该在registerTeacherAction()为教师设置角色时设置什么代码,以及registerStudentAction()为成功注册设置学生角色?
解决方案1(Doctrine Listener/Subscriber)
您可以轻松添加一个教义prePersist 侦听器/订阅者,在持久化之前根据其类型将角色/组添加到您的实体.
听众
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');
// ...
}
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
服务配置
# 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 }
Run Code Online (Sandbox Code Playgroud)
解决方案2(Doctrine LifeCycle Callbacks):
使用生命周期回调,您可以将角色/组操作直接集成到您的实体中.
/**
* @ORM\Entity()
* @ORM\HasLifecycleCallbacks()
*/
class Student
{
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->addRole('ROLE_WHATEVER');
$this->addGroup('students');
}
Run Code Online (Sandbox Code Playgroud)
解决方案3(事件调度程序):
为"fos_user.registration.success"事件注册事件侦听器/订阅者.
| 归档时间: |
|
| 查看次数: |
3916 次 |
| 最近记录: |