私のsymfony3アプリケーション用のシンプルなコントローラでFOSUserBundleを使ってユーザーの電子メールアドレスを更新していました。Symfony 3 FOSUserBundle 'エラー:タイプがAppBundle Entity Userのオブジェクトを配列として使用できません'
$user = $this->getUser();
$user->setEmail($email);
このエラーを2行目に返します。
Error: Cannot use object of type AppBundle\Entity\User as array
私は明らかに、配列としてオブジェクトを使用して、私はBaseUserクラスのメソッドを使用していますことを考えると、私はそれがこのエラーを投げている理由と途方に暮れていますていませんよ。
EDIT:
コントローラ
/**
* @Route("/portfolio/settings", name="portfolio_settings")
*/
public function settingsAction(Request $request)
{
$user = $this->getUser();
$em = $this->getDoctrine()->getManager();
$email_form = $this->get('form.factory')->createNamedBuilder('change_email', FormType::class, $user)
->add('email', EmailType::class, array(
'label' => 'E-Mail',
))
->add('save', SubmitType::class, array(
'label' => 'Save'
))
->getForm();
$password_form = $this->get('form.factory')->createNamedBuilder('change_password', FormType::class, $user)
->add('password', RepeatedType::class, [
'type' => PasswordType::class,
'invalid_message' => 'The password fields must match.',
'options' => array('attr' => array('class' => 'password-field')),
'required' => true,
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Repeat Password'),
])
->add('save', SubmitType::class)
->getForm();
$email_form->handleRequest($request);
$password_form->handleRequest($request);
if($email_form->isValid()){
$data = $email_form->getData();
$user->setEmail($data['email']);
$em->persist($user);
$this->addFlash(
'success',
'Your E-Mail address has been updated successfully'
);
}
$em->flush();
return $this->render('AppBundle:Portfolio:settings.html.twig', array(
'email' => $email_form->createView(),
'password' => $password_form->createView(),
));
}
スタックトレース
[1] Symfony\Component\Debug\Exception\FatalErrorException: Error: Cannot use object of type AppBundle\Entity\User as array
at n/a
in /var/www/html/scnce/src/AppBundle/Controller/PortfolioController.php line 114
ライン114は
$user->setEmail($data['email']);
何かが原因で、エラーが発生している場所ではないと思われます。完全なスタックトレースとこのエラーが発生しているファイル全体をポストできますか? – Squeegy
私は私の編集を編集しました。 –