Przepisuję swój portal z wersji 2.8 do 4.4 Symfony.
Na wersji 2.8 działała mi dobrze aktualizacja hasła użytkownika natomiast teraz jest z tym jakiś problem.
Mam błąd:
Argument 1 passed to Symfony\Bundle\FrameworkBundle\Controller\AbstractController::createForm() must be of the type string, object given, called in C:\xampp\htdocs\ligatyperow2\src\Controller\MainController.php on line 254PS. Linia 254 to:
$changePasswdForm = $this->createForm(new ChangePasswordType(), User::class);
Mój kod:
MainController:
public function accountSettingsAction(Request $Request, LoggerInterface $logger)
{
$logger->info('this is the account action');
$User = $this->getUser();
// Change Password
$changePasswdForm = $this->createForm(new ChangePasswordType(), User::class);
if($Request->isMethod('POST') && $Request->request->has('changePassword')){
$changePasswdForm->handleRequest($Request);
if($changePasswdForm->isValid()){
try {
$userManager = $this->get('user_manager');
$userManager->changePassword($User);
$this->get('session')->getFlashBag()->add('success', 'Twoje hasło zostało zmienione!');
return $this->redirect($this->generateUrl('liga_typerow_account'));
} catch (UserException $ex) {
$this->get('session')->getFlashBag()->add('error', $ex->getMessage());
}
}else{
$this->get('session')->getFlashBag()->add('error', 'Popraw błędy formularza2!');
}
}
'user' => $User,
'changePasswdForm' => $changePasswdForm->createView()
);
}
ChangePasswordType.php :
<?php
namespace App\Form;
use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Validator\Constraints\UserPassword;
class ChangePasswordType extends AbstractType {
public function getName() {
return 'changePassword';
}
public function buildForm
(FormBuilderInterface
$builder, array $options) { $builder
->add('currentPassword', 'password', array( 'label' => 'Aktualne hasło',
'mapped' => false,
'message' => 'Podano błędne aktualne hasło użytkownika'
))
)
))
->add('plainPassword', 'repeated', array( 'type' => 'password',
'first_options' => array( 'label' => 'Nowe hasło'
),
'second_options' => array( 'label' => 'Powtórz hasło'
)
))
->add('submit', 'submit', array( 'label' => 'Zmień hasło'
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}
AccountSettings.html.twig
{% extends 'base.html.twig' %}
{% block content %}
<div class="div_change_pass_box"></div> <div class="div_change_pass_box_small_screen"></div> <div class="div_change_pass">{{ form(changePasswdForm) }}
</div>
{% endblock %}