Ich arbeitete an einem einfachen Controller für meine Symfony3-App mit FOSUserBundle, um die E-Mail-Adresse des Benutzers zu aktualisieren.Symfony 3 FOSUserBundle Fehler: Objekt des Typs AppBundle Entity User kann nicht als Array verwendet werden
$user = $this->getUser();
$user->setEmail($email);
Gibt diesen Fehler in der zweiten Zeile zurück.
Error: Cannot use object of type AppBundle\Entity\User as array
Ich verwende eindeutig nicht das Objekt als Array bedenken, dass ich eine Methode der BaseUser Klasse verwenden, so ich bin ratlos mit, warum es diesen Fehler zu werfen.
EDIT:
-Controller
/**
* @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(),
));
}
Stack Trace
[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
Die Linie 114 ist
$user->setEmail($data['email']);
Etwas führt mich zu der Annahme, dass hier nicht der Fehler auftritt. Können Sie den vollständigen Stack-Trace und die gesamte Datei, in der dieser Fehler auftritt, posten? – Squeegy
Ich habe meinen OP bearbeitet. –