2017-05-30 82 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 
    ]); 

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

+0

或者,如果您不需要密碼_at all_,則可以覆蓋用戶實體並刪除密碼字段。 –

+0

你也是。 – Flosculus

+0

@Flosculus:不工作! – Arcv

0

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

+0

我希望該字段僅以該形式隱藏,而我的情況下也需要密碼才能使用其他形式。 – Arcv

+0

爲什麼不創建另一個表單? – L01C