problème lors de la création d'un formulaire

An exception has been thrown during the rendering of a template ("Notice: Array to string conversion").

Le problème exposé dans ce sujet a été résolu.

Bonjour j’essaie de créer un formulaire pour modifier le mot de passe si on le souhaite, or lorsque j’afficher la vue j’ai ce message : An exception has been thrown during the rendering of a template ("Notice: Array to string conversion"). l’erreur se trouve à la ligne 17 de mon form_div_layout.html.twig dans la ligne de code suivante :

<input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>

Je vous envoie également le code de mon controller et de mon fichier twig :

namespace App\Controller;

use App\Form\ChangePasswordType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class AccountPasswordController extends AbstractController
{
    /**
     * @Route("/compte/modifier-mdp", name="account_password")
     */
    public function index(): Response
    {
        $user = $this->getUser();
        $form = $this->createForm(ChangePasswordType::class, $user);

        return $this->render('account/password.html.twig',[
            'form'=>$form->createView()
        ]);
    }
}
{% extends "base.html.twig.html" %}

{% block title %}modifier mon mot de passe - La boutique Française   {% endblock title %}

{% block content %}
<h1>modifier mon mot de passe</h1>
<a href="{{path('account')}}">Retourner à mon compte</a>
<hr>
    {{form(form)}}
<hr>
{% endblock %}

Oui pas de problème :

<?php

namespace App\Form;

use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ChangePasswordType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('email')
            ->add('roles')
            ->add('password')
            ->add('firstname')
            ->add('lastname')
        ;
    }

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'data_class' => User::class,
        ]);
    }
}

Donc en fait, c’est un formulaire d’édition d’utilisateur, pas simplement de changement de mot de passe ?

En remontant un peu la pile d’appel de l’exception, on devrait pouvoir trouver le champ qui pose problème. Un de ceux que je pourrais soupçonner en l’état, c’est roles qui risque fort de ne pas pouvoir être deviné comme un ChoiceType et qui pourrait bien être par défaut générer un essai de rendu comme un simple TextType, il faudra préciser le type réel (et ses options) dans la définition, quitte à faire un RoleType ou avoir les rôles sous forme d’entités.

+0 -0

Bien vu c’est le "role" qui posait problème. En, fait je veux créer un formulaire de modification de mot de passe mais ou l’on voit quand même son adresse mail et son nom prénom mais sans pouvoir les modifier. Tu m’as mis la puce à l’oreille avec "role" et j’ai juste supprimer la ligne suivant de mon dossier twig -> "->add(’roles’)" et çà marche. Merci à toi.

A mon avis, tu ne devrais pas avoir les champs pour les autres données si c’est pour ne permettre de modifier que le mot de passe. Si tu n’as fait que supprimer le champ pour les rôles, les autres champs restent disponible. Si un utilisateur s’arrange pour rendre les champs modifiables de son côté, il pourra modifier ce qu’il veut parmi les champs.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte