【问题标题】:Symfony forms - password typeSymfony 表单 - 密码类型
【发布时间】:2013-09-05 12:00:42
【问题描述】:

当我尝试在表单类型类中添加密码时:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('name', 'text');
    $builder->add('email', 'email');
    $builder->add('password', 'password');

    $builder->add('terms', 'checkbox', array(
        'mapped' => false,
        'constraints' => new NotBlank()
    ));
}

然后在 twig 模板{{ form_row(register.password) }} 中渲染该字段,它看起来就像是文本文件。但我需要它是密码类型<input type='password'..

表单类型也附加到具有密码属性的实体:

/**
 * @var string
 *
 * @ORM\Column(name="password", type="string", length=32, nullable=false)
 */
private $password;

是什么原因?

【问题讨论】:

  • 您使用表单主题吗?如果是这种情况,可能会覆盖默认小部件。你可以试试{{ form_widget(register.password) }} 看看会发生什么?

标签: php symfony symfony-forms


【解决方案1】:

$builder->add('child', 'type', ...)中应该使用Type来定义字段Type

$builder->add('username', TextType::class, array('label' => 'Username'))
        ->add('password', PasswordType::class, array('label' => 'Password'))

在树枝中

{{ form(form) }}

【讨论】:

    【解决方案2】:

    原因是我使用了表单主题:

    {% block text_row %}
    <div>
    
        {{ block('form_label') }}
    
        <div>
            {{ block('form_widget_simple') }}
        </div>
    
    </div>
    {% endblock %}
    

    所以我添加了新块:

    {% block password_row %}
    <div>
    
        {{ block('form_label') }}
    
        <div>
            {{ block('password_widget') }}
        </div>
    
    </div>
    {% endblock %}
    

    现在一切正常

    【讨论】:

      【解决方案3】:

      不确定这是否正确,但您是否尝试为该字段指定类型?

      $builder->add('password', 'password', array('type'=>'password');

      【讨论】:

        猜你喜欢
        • 2018-07-09
        • 2016-06-26
        • 2013-01-29
        • 2018-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多