register fos_user fos check symfony controller fosuserbundle pugxmultiuserbundle

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 ?