【问题标题】:Symfony2: How to persist a new User in an admin-interface with FOSUserBundle?Symfony2:如何使用 FOSUserBundle 在管理界面中保留新用户?
【发布时间】:2014-02-26 04:07:16
【问题描述】:

我正在创建管理视图,我可以在其中列出用户并创建用户。 我已经创建了 User 类,但我不知道如何坚持下去。

我需要手动创建表单然后持久化吗?

我已经使用正常保存进行了保存,但随后执行了验证。

我想知道我是否需要手动对密码等进行编码,或者FOSUserBundle 会为我做这些。

【问题讨论】:

    标签: php symfony fosuserbundle


    【解决方案1】:

    我假设您不打算使用...

    • 新用户默认/registerroute / method
    • 控制台command:app/console fos:user:create testuser test@example.com p@ssword

    ...正如您所说的管理员(网络)界面。


    答案:

    ContainerAware 类(即控制器)中...

    ...您可以重复使用默认的注册表单并禁用验证:

    $user = new User();
    $this->createForm(
        $this->get('fos_user.registration.form.type'),
        $user,
        array(
           'validation_groups' => false,
        )
    );
    

    这里是如何手动创建一个新的User并将其持久化到数据库中:

    $om      = $this->container->get('doctrine.orm.entity_manager');     
    $manager = $this->container->get('fos_user.user_manager');
    
    $user = $manager->createUser();
    
    $user
        ->setUsername('nifr')
        ->setEmail('dont@spam.me')
        ->setPlainPassword('Insecure123')
        ->setEnabled(true)
    ;
    
    $om->persist($user);
    $om->flush();
    

    【讨论】:

    • 但是我从 Fosuser 类扩展了 User 类并且有额外的字段,所以我必须自己创建新表单。但我不确定当我提交新表单时如何将新表单与 Fosuser 数据一起保存
    • 您在问题中没有提到这一点。那是另一回事。我以当前形式回答您的问题。我看不到您的用户实体包含自定义字段。请打开一个新问题,询问如何重新使用/扩展 FOSUserBundle 的注册表单以包含自定义字段。
    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多