プロジェクトに FOSUserBundle を正常にインストールし、すべてが期待どおりに機能します。しかし、実際のプロジェクトでそれを実装する方法に苦労しています。
次のセットアップを作成したいと思います。
1 つのフォーム (ニュースレターの購読など) でいくつかのユーザー設定を表示するページ、2 つ目のフォームでパスワードを変更する可能性、および場合によっては 3 つ目のフォームでユーザー名を変更する可能性もあります。
設定フォームとその他の情報は、コントローラーの既存のアクションから取得されており、うまく機能しています。
私はいくつかのことを試しましたが、まだうまくいきません:
FOSUserBundle\Controller\ChangePasswordController\changePasswordAction()
いくつかの機能を自分のアクションにコピーしました。このようにして、パスワード変更フォームを取得し、ビューを作成してテンプレートに渡すことができました。フォームをテンプレートに追加しました
{{ form_widget(form) }}
。フォームが表示されており、機能しています。パスワードを変更できます。ただし、ラベルは失われておりCurrent
、 、First
、および と表示されていSecond
ます。また、2 つの新しいパスワードが一致しない場合や空のままになっている場合にも、エラー メッセージは表示されません。
全体として、私はおそらくこれを間違った方法で行っていると感じています。このタスクをどのように処理すればよいか、どこで愚かなことをしている可能性があるかを指摘していただけませんか?
これが私のアクションのコードであり、ここで重要なものに縮小されています。
# src/Acme/MyBundle/Controller/BackendController.php
public function accountAction(){
//pretty much a copy of FOSUserBundle\Controller\ChangePasswordController\changePasswordAction()
$user = $this->get('security.context')->getToken()->getUser();
$form = $this->container->get('fos_user.change_password.form');
$formHandler = $this->container->get('fos_user.change_password.form.handler');
$process = $formHandler->process($user);
if ($process) {
//password has been changed, response will be generated
}
//more stuff going on here
$moreStuff = ...
//render view
return $this->render('AcmeMyBundle:Backend:account.html.twig', array(
'form' => $form->createView(),
'moreStuff' => $moreStuff
));
}