我想用FOS實現密碼更改功能,但我不知道該怎麼做。實現更改密碼功能symfony 2與FOS
我開始用兩個屬性(舊密碼和新密碼(重複)創建一個表單
class ChangePasswordType extends UtilisateurType{
/**
* @SecurityAssert\UserPassword(
* message = "pswd ko"
*)
*/
protected $oldPassword;
/**
* @Assert\Length(
* min = 7,
* max = 255,
* minMessage = "pswd too short"
* maxMessage = "pswd too long"
*)
*/
protected $newPassword;
protected $user;
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('old', 'password', array('label' => 'Mot de passe actuel','attr' => array('placeholder' => 'Sasir votre mot de passe actuel','class' =>'form-control')));
$builder->add('newPassword', 'repeated', array(
'type' => 'password',
'invalid_message' => ' Les deux mots de passe ne sont pas identiques .',
'required' => true,
'first_options' => array('label' => 'Nouveau mot de passe', 'attr' => array('placeholder' => 'Sasir un nouveau mot de passe','class' =>'form-control')),
'second_options' => array('label' => 'Vérification', 'attr' => array('placeholder' => 'Vérification','class' =>'form-control')),
));
}
/**
* @return string
*/
public function getName()
{
return 'Mybundle_changePassword';
}
在我的控制,我創建的形式是這樣的:
$form = $this->createForm(new ChangePasswordType(), null, array(
'action' => $this->generateUrl('fos_user_change_password'),
'method' => 'POST',
));
在我小枝,我有這個表格和一個提交按鈕(動作:changePasswordAction
的ChangePasswordController
在FOS),但它不起作用。
{{ form_start(formChangerPswd) }}
{{ form_widget(formChangerPswd) }}
<div class="box-footer">
<input type="submit" value="Modify pswd" class="btn btn-primary pull-right" formnovalidate="formnovalidate"/>
</div><!-- /.box-footer -->
{{ form_end(formChangerPswd) }}
我有這個錯誤:
不能從類型「MyBundle \實體\用戶」的對象讀取索引「舊密碼」,因爲它沒有實現\ ArrayAccess接口。
這是實現此功能的最佳方式嗎? 有人可以幫我嗎?
你究竟想要達到什麼目的?您是否注意到該包已經附帶了此功能的表單類型? – xabbuh
我正在嘗試實現更改密碼功能。 – peace
這並不能解釋爲什麼在重新使用FOSUserBundle已提供的功能的其餘部分時自己構建表單類型的原因。 – xabbuh