代码之家  ›  专栏  ›  技术社区  ›  user1994660

Symfony2:如何使用FOSUserBundle在管理界面中持久化新用户?

  •  3
  • user1994660  · 技术社区  · 10 年前

    我正在创建一个管理视图,可以在其中列出用户并创建用户。 我已经创建了 User 但我不知道怎样才能坚持下去。

    我是否需要手动创建表单,然后将其持久化?

    我已使用普通保存进行了保存,但随后执行了验证。

    我想知道我是否需要手动编码密码等 FOSUserBundle 会为我做的。

    1 回复  |  直到 10 年前
        1
  •  4
  •   Nicolai Fröhlich    10 年前

    我想你不打算使用。。。

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

    …当你谈论一个 管理 (web)-界面。


    答覆:

    在一个 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();