注册成功后如何分配角色?

2024-03-30

我正在使用 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')它返回一个manager。在里面fos 用户 overring 控制器帮助 https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_controllers.md,他们要么得到一个form or a form.handler。我很难将它们与 pugx_multi_user 管理器“链接”。

我应该在其中输入什么代码registerTeacherAction()为教师设定角色,并在registerStudentAction()为学生设定角色注册成功后?


解决方案 1(教义聆听者/订阅者)


您可以轻松添加教义prePersist 听众/订阅者 http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html在持久化之前,根据其类型将角色/组添加到您的实体中。

听者

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 生命周期回调):


Using 生命周期回调 http://symfony.com/doc/current/book/doctrine.html#lifecycle-callbacks您可以将角色/组操作直接集成到您的实体中。

/**
 * @ORM\Entity()
 * @ORM\HasLifecycleCallbacks()
 */
class Student
{
    /**
     * @ORM\PrePersist
     */
    public function setCreatedAtValue()
    {
        $this->addRole('ROLE_WHATEVER');
        $this->addGroup('students');
    }

解决方案 3(事件调度程序):


注册一个事件监听器/订阅者“fos_用户.注册.成功” https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/FOSUserEvents.php#L137 event.

如何创建事件监听器 http://symfony.com/doc/current/cookbook/service_container/event_listener.html / The 事件调度器 http://symfony.com/doc/current/components/event_dispatcher/introduction.html成分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注册成功后如何分配角色? 的相关文章

随机推荐

  • 在 Swift 2.0 中更改 AVAudioPlayer 的速率变量时声音失真

    我正在开发一个简单的音频播放应用程序 它大约有 10 个音频文件 每个文件的正常播放速度为每分钟 100 节拍 用户可以输入一个节奏变量 70 到 140 b p m 之间 该变量在调用 play 函数之前被分配给 tempo 100 AV
  • “setHasOptionsMenu(Boolean): Unit”已弃用。在 Java 中已弃用

    如何在 Android 片段中声明菜单 我以前使用的方法现在已被弃用 起初 override fun onCreateView View setHasOptionsMenu true override fun onCreateOptions
  • 标题中有多行的粘性标题表

    所以我能够创建一个粘性标题表并且它工作正常 问题是我需要制作另一个带有多行标题的表 而我到目前为止使用的方法不起作用 正如您在下面的代码中看到的那样 table wrapper position relative overflow y au
  • Javascript setTimeout 立即在 React Native 中运行

    我的问题是 setTimeout 运行 about 5 seconds早些时候 例如 当我将其设置为5 seconds 它立即运行 但是当我在15 seconds 它将运行大约10 seconds later 我什至调查了这个问题 Reac
  • Django 信号仅在 debug=True 时有效,DJANGO 3.2.4

    我一直在到处寻找 但找不到任何关于此的参考 我的 Django 模型信号仅在 debug True 时才起作用 但如果 debug False 则不起作用 这种情况在本地主机和生产服务器上都会发生 我的设置如下所示 设置 py from p
  • 使所有峰在Matlab中清晰可见

    我终于解决了我的问题here https stackoverflow com questions 20777252 to apply window function on wigner ville distribution in matla
  • 如何正确使用 Html.Raw(Json.Encode(Model)) ?

    我正在尝试使用以下代码对我的 MVC 模型进行编码 但警报消息给了我一个空值 我不确定为什么它给我一个空值 因为这是一个创建表单 我正在尝试从中创建一个模型 我的 html 代码具有以下外观 using Html BeginForm Htm
  • 带有自定义标题、描述和图像的 Facebook 分享按钮[重复]

    这个问题在这里已经有答案了 可能的重复 Facebook Sharer 如何选择图像 https stackoverflow com questions 1138460 how does facebook sharer select ima
  • Angular 2在路由中排除url

    我已经使用角度实现了路由 如下所示 export const routes RouterConfig path component HomeComponent path component SearchComponent 我需要匹配所有默认
  • 修改二维 ruby​​ 数组有困难

    新手问题请见谅 我正在尝试在 ruby 中创建一个二维数组 并将其所有值初始化为 1 我的代码可以很好地创建二维数组 但无法修改其任何值 谁能解释我做错了什么 def mda width height make a two dimensio
  • collectionViewContentSize() 与 contentSize

    有什么区别 collectionViewController collectionViewLayout collectionViewContentSize and collectionViewController collectionVie
  • SQL Server 数据工具忽略架构比较的重构

    我遇到了与此处描述的问题看似相同的问题 架构比较脚本生成会忽略 SSDT 重构重命名 https stackoverflow com questions 20082079 ssdt refactor rename is ignored by
  • Hibernate 对于 Web 应用程序来说更安全吗?

    我有疑问是否Hibernate对于 Web 应用程序 JSP Servlet Hibernate MySQL 来说是安全的 它将获得 不同用户 一次 的数千个访问 我担心的原因如下 想象一下 我有一个供学校学生使用的网络应用程序 他们有自己
  • 如何从 Compass 输出压缩的 CSS?

    如何配置指南针以输出较小或压缩的 CSS 文件 我试过compass s compressed但这没有用 In your config rb file output style compressed More at http compass
  • 如何在 MFC 中创建 GUI

    我需要能够即时创建指南 MFC中有没有办法做到这一点 我了解了如何在 net 中做到这一点 但我们还没有做到这一点 如果没有 您是否有一些我可以使用的代码的指针 don t forget to add Rpcrt4 lib to your
  • 生成向量元素的所有可能组合的列表

    我正在尝试在长度为 14 的向量中生成 0 和 1 的所有可能组合 是否有一种简单的方法可以将输出作为向量列表 甚至更好 作为数据帧 为了更好地演示我正在寻找的内容 假设我只想要一个长度为 3 的向量 我希望能够生成以下内容 1 1 1 0
  • SQL Developer 清除脚本中的绑定变量

    我正在编写一个脚本 其中多个后续过程需要一个过程的输出 所以 我需要绑定变量 而不是替换变量 但是 每当使用该变量时 它就会被清除 这使得不可能多次使用变量的值 完全相同的脚本在 SQL Plus 中运行 我在下面制作了一个简短的脚本来演示
  • 警告:“继续”目标开关相当于“中断”。您的意思是使用“继续2”吗?

    我有 php7 3 和 symfony2 8 当我尝试使用控制台创建类时 出现此错误 Symfony Component Debug Exception ContextErrorException 警告 继续 目标开关相当于 中断 你的意思
  • 如何在kubernetes中指定Proxy Pass

    我的资产在 s3 上 我的服务部署在 kubernetes 上 是否可以在 nginx ingress conf 中定义代理传递 我当前的 nginx proxy pass 资产到 s3 我想在 kubernetes 中复制 locatio
  • 注册成功后如何分配角色?

    我正在使用 fos 用户捆绑包和 pugx 多用户捆绑包 我已阅读所有文档 并且我是 Symfony 的新手 在 pugx 多用户捆绑包中 每个点都有一个示例 但只有一个 成功注册 覆盖控制器的示例生成表格 gt 好的 覆盖模板的示例生成表