2017-05-30 11 views
0

最初のステップ登録でパスワードが必要ないので、登録フォームにパスワードフィールドを設定したかったのです。私はフォームをオーバーライドして以来、今はフィールドが表示されていませんが、パスワードは空白であってはいけないと言われています。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'; 
} 

}

を働いていません。

ありがとうございました。

答えて

0

だから、今は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'; 
}} 

今では空白として表示されませんとパスワードを入力して、登録のために、私はこのフィールドを更新する必要があります。

+0

メソッドの名前をsetPasswordValueに変更し、パラメータを持たないようにする必要があります。とにかく、あなたはそれを使用していない – OlivierC

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

オプションを提供するための3番目のパラメータがあります。これを使用してオプションにすることができます。

+0

また、パスワード_at all_が必要ない場合は、ユーザーエンティティを上書きしてパスワードフィールドを削除することもできます。 –

+0

あなたもそうです。 – Flosculus

+0

@Flosculus:うまくいきません! – Arcv

0

NotBlank制約を変更するには、FOSUserBundle/Resources/config/validation.xmlを上書きできます。 MyBundle/Resources/config/validation.xmlにコピーして、必要な変更を加えます。

+0

フィールドをそのフォームだけに隠しておきたいのですが、他のフォームでもパスワードが必要になります。 – Arcv

+0

別のフォームを作成しないのはなぜですか? – L01C

関連する問題