【问题标题】:Remove email field FOSUserBundle删除电子邮件字段 FOSUserBundle
【发布时间】:2017-09-06 22:25:53
【问题描述】:

我需要从注册表中删除电子邮件字段。
我的解决方案是覆盖注册FormType:

<?php
// src/AppBundle/Form/RegistrationType.php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class RegistrationType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->remove('email');
    }

文件已成功删除,但验证过程被触发“请输入电子邮件”。
关于如何禁用电子邮件字段验证,甚至如何以正确的方式实现这一技巧的任何想法。

【问题讨论】:

    标签: symfony fosuserbundle


    【解决方案1】:

    破解实体设置器:

    public function setUsername($username) {
        $username = is_null($username) ? '' : $username;
        parent::setUsername($username);
        $this->setEmail($username);
        return $this;
    }
    

    从 FormType 中删除字段:

    public function buildForm(FormBuilder $builder, array $options) {
        parent::buildForm($builder, $options);
        $builder->remove('email');
    }
    

    但是在破解它之前,你应该看看来自 jolicode 的this presentation

    如果您目前正在做这种修改,那是因为 FosUserBundle 不适合您的项目。我认为你不应该使用它。 (我个人认为这不是一个好的捆绑包,请阅读上面的完整演示文稿以发表您自己的意见)

    如果你想替换它,我建议你使用这个excellent tutorial 来创建你自己的安全系统。 (编码/粘贴/理解的时间:2 或 3 小时)

    【讨论】:

      【解决方案2】:

      例如,你可以给它用户名的值

      用户.php

      * @ORM\HasLifecycleCallbacks
      
      
      /**
       *
       * @ORM\PrePersist()
       */
      public function setEmailUser(){
      
          $this->email = $this->username;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 2020-08-26
        • 2017-09-12
        • 1970-01-01
        • 2012-05-06
        相关资源
        最近更新 更多