sooo基本的に私はFOS_USERとsymphonyを使用してユーザーのパスワードを変更しようとしています。
コードは次のようになります(FOS_UserシンフォニーバンドルのChangePasswordActionのコードと同じですが、応答はAJAXを使用するように変更されています
public function changePasswordAction(Request $request) {
// $form = $this->createForm(new ChangePasswordFormType('Bandness\BandeeBundle\Entity\Bandee'), $this->getUser());
$user = $this->getUser();
$dispatcher = $this->container->get('event_dispatcher');
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::CHANGE_PASSWORD_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$formFactory = $this->container->get('fos_user.change_password.form.factory');
$form = $formFactory->createForm();
$form->setData($user);
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->container->get('fos_user.user_manager');
$event = new FormEvent($form, $request);
$dispatcher->dispatch(FOSUserEvents::CHANGE_PASSWORD_SUCCESS, $event);
$userManager->updateUser($user);
$dispatcher->dispatch(FOSUserEvents::CHANGE_PASSWORD_COMPLETED, new FilterUserResponseEvent($user, $request, new Response()));
return new JsonResponse($this->get('translator')->trans('Bandee.config.changepass.success'),200);
}
else return new JsonResponse($this->getTranslatedErrors($form), 422);
}
問題は、これが機能していないように見えることです。php 5.3.6を使用するapache2の場合は完全に機能しますが、他のマシンでは機能しません。通常の応答は「有効な番号ではありません」ですが、番号をまったくチェックする必要がないため、意味がありません。
FOS_UserとPHPの一部のバージョンにバグがあるように感じますが、PHPバージョン5.4.4でも5.3.10でも機能しません。
助言がありますか?