4

我正在创建一个应用程序,访问者可以在其中上传一些东西(仅适用于受邀人员)。最后,如果他们没有登录,他们会被要求登录或创建一个用户。如果他们创建了一个新用户,我只想让他们填写他们的姓名和电子邮件。

将生成一个密码,如果用户愿意,将向用户发送一封邮件,其中包含更改密码的链接(只是为了使程序尽可能低级)。

我似乎无法从注册表单中删除密码字段。有人可以帮我吗。我创建了一个自定义表单类型、服务并注册了它。我还将自定义模板放在 app/Resource 文件夹等中。虽然我的自定义表单类型和模板正在使用,但密码仍然出现......

class RegistrationFormType extends BaseType {

  public function buildForm(FormBuilderInterface $builder, array $options) {
    parent::buildForm($builder, $options);

    // add your custom field
    $builder->add('username');
    $builder->add('email');
  }

  public function getName() {
    return 'val_user_registration';
  }

}
4

1 回答 1

2

你不需要扩展你的父表单......在这种情况下你最好不要这样做。

只需创建一个 Username/Email 表单并在自定义注册方法中自己创建新的 User 实体,然后将其持久化到数据库中(不要忘记在新创建的 User 上设置 usernameCanonical 属性)。

FOSUserBundle 在注册过程中调用了几个与密码相关的东西,在这种情况下你不需要也不能轻易绕过。

完成密码/电子邮件步骤后,您可以将实体(使用新创建的密码)传递给FOSUserBundle 的UserManager服务的更新方法。

于 2013-05-27T11:21:31.940 回答