簡體   English   中英

設置隱藏在FOS UserBundle中的密碼

[英]Set password hidden in FOS UserBundle

我想在注冊表單中將密碼字段設置為隱藏,因為在第一步注冊中不需要密碼。 由於我已經覆蓋了表單,該字段現在沒有顯示,但是我仍然無法提交表單,因為它說密碼不應為空。

所以我已經嘗試過了

class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('firstname')
        ->add('lastname')
        ->add('username')
        ->add('plainPassword',HiddenType::class)
        ->add('sex')
        ->add('email')
        ->add('city')
        ->add('zip_code')
        ->add('age');
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class'=>'AppBundle\Entity\User'
    ]);
}

public function getBlockPrefix()
{
    return 'app_bundle_registration_type';
}

}

任何幫助,將不勝感激。

謝謝。

$builder
    ->add('password', HiddenType::class, [
        'required' => false,
        'validation_groups' => false
    ]);

您有第三個參數來提供選項,您可以使用它使它成為可選參數。

要修改NotBlank約束,您可以覆蓋FOSUserBundle / Resources / config / validation.xml。 將其復制到MyBundle / Resources / config / validation.xml並進行所需的更改。

因此,現在借助OlivierC設法解決了這一問題!

因此,我使用了生命周期回調將數據持久保存在實體中。

http://symfony.com/doc/current/doctrine/lifecycle_callbacks.html

實體:

/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{

/**
 * @return string
 */
public function getPassword()
{
    return $this->password;
}

/**
 * @ORM\PrePersist()
 */
public function setPassword($password)
{
    $this->password = 'abcdef';
}}

現在它不會顯示為空白,並且要使用密碼注冊,我需要更新此字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM