fos_user - symfony 3.4 fosuserbundle
¿Cómo asignar roles en el registro exitoso? (1)
Solución 1 (Doctrine Listener / Subscriber)
Puede agregar fácilmente un oyente / suscriptor prePersist
doctrina que agregue los roles / grupos a sus entidades dependiendo de su tipo antes de persistir.
El oyente
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'');
// ...
}
// ...
}
}
La configuración del servicio
# 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 }
Solución 2 (devolución de llamada de Doctrine LifeCycle):
Utilizando devoluciones de llamada del ciclo de vida puede integrar las funciones de rol / grupo directamente en su entidad.
/**
* @ORM/Entity()
* @ORM/HasLifecycleCallbacks()
*/
class Student
{
/**
* @ORM/PrePersist
*/
public function setCreatedAtValue()
{
$this->addRole(''ROLE_WHATEVER'');
$this->addGroup(''students'');
}
Solución 3 (Despachador de eventos):
Registre un oyente / suscriptor de evento para el evento "fos_user.registration.success" .
Cómo crear un detector de eventos / El componente EventDispatcher .
Estoy usando el paquete de usuario de fos y el paquete de múltiples usuarios de pugx. He leído toda la documentación y soy nuevo en Symfony. En el paquete multiusuario de pugx hay una muestra en cada punto excepto uno: registro exitoso.
- Ejemplos de controladores superiores para generar formularios => ok
- Muestras de plantillas de anulación para generar formularios => ok
- Muestras de sobrescribir muestra de registro exitosa => nada.
Aquí está mi código:
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'');
}
}
El problema es con ->get(''pugx_multi_user.registration_manager'')
que devuelve un administrador . En el usuario de fos que los controladores de overring ayudan , obtienen un form
o un form.handler
. Estoy teniendo dificultades para "vincular" a aquellos con el administrador pugx_multi_user.
¿Qué código debo poner en registerTeacherAction()
para establecer roles para el maestro, y en registerStudentAction()
para establecer roles para el estudiante en un registro exitoso ?