Bonsoir, je suis entrain de suivre la formation sur symfony mais je suis bloqué au niveau de la methods edit de class AdminPropertyController.

En effet j'ai une erreur qui me dit que la propriété postalCode n'existe pas dans la class App\Entity\Property pourtant dans la cet class j'ai bien code_postal en snake case et que mon fichier et identique a celle dans la vidéos, j'ai vérifier a plusieur reprise mais trouve pas pourquoi il ne la trouve pas, j'ai comme l'impression qu'il prend par defaut les propriété en camelcase et pas en snakecase.

Je vous mais une aperçu du code juste en dessous :

    /**
     * @Route("/admin/{id}", name="admin.property.edit")
     * @param Property $property
     * @return Property
     */
    public function edit (Property $property)
    {
        $form = $this->createForm(PropertyType::class, $property);
        return $this->render('admin/property/edit.html.twig', [
            'property'  =>  $property,
            'form'      =>  $form->createView()
        ]);
    }

Et classe Property (Entity - Créer en CLI)

    ....

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $postal_code;

    ....

     public function getPostalCode(): ?string
    {
        return $this->postal_code;
    }

    public function setPostalCode(string $postal_code): self
    {
        $this->postal_code = $postal_code;

        return $this;
    }

    ....

Merci d'anvance, je début avec symfony, mais je suis sur que c'est un petit truc que j'ai zappé, également j'ai déjà vidé les cache mais rien, toujours le même problème.

7 réponses


Anshen Kondjah
Réponse acceptée

Bonsoir,

J'ai trouvé la solution.
j'ai supprimé dans la BDD la table version et la table property
puis supprimé le fichier Property, PropertyType, bredf, tous les fichiers qui utilisent une instance de la classe Property.
J'ai récréé la table propertty puis les différents champs mais en utilisant cette fois-ci le camelcase pour : postalCode et createAt
et ça fonctionne pour moi.

JMERISE
Auteur
Réponse acceptée

Oui, après des heures de recherche, j'ai également trouver une solution, comme tu le dit j'ai également changer l'entité Property, en mettant les nom des propriétés en CamelCase comme le dit dans la docs de symfony et en régénérant le form et par magie ça marhé.
Mais au niveau de ma base de donnée j'ai toujours garder les nom en snake case.

Bonjour,

J'ai le même problème avec cette property postalCode :
"Property "postalCode" does not exist in class "App\Entity\Property"

En suivant la vidéo l'auteur utilise à un certain moment la propriété postalCode dans le template home.html.twig, qui n'est pas déclaré et ...cela fonctionne:
<p class="card-text">{{ property.city }} ({{ property.postalCode }})</p>

je ne sais pas pourquoi il utilise ici : postalCode, et d'où ça vient
pour récupérer le code postal.

Dans le template , j'utilise : getPostalCode pour récupérer le code postal et ça fonctionne aussi :

<p class="card-text">{{ property.city }} ({{ property.getPostalCode}})</p>

Merci d'avance à la personne qui pourra nous éclairer.

JMERISE
Auteur

Bonsoir,

Effectivement, property.postalCode marche dans le template mais j'ai du mal a comprendre pourquoi il ne le trouve pas quand on créer un form.

Salut,
Par convention, sous Symfony, les propriétés sont en camelCase, jamais en snake_case.
https://symfony.com/doc/current/contributing/code/standards.html

JMERISE
Auteur

@Digivia du coup, comment sa ce fait que dans la vidéos Grafikart n'a pas l'erreur ?

@BIG_DADDY, je n'ai pas dit que l'erreur vient de cela. C'est une convention, et elle est là pour rendre le code plus uniforme et plus maintenable. Après chacun peut faire comme il le souhaite. Tout le monde a le droit de coder comme un cochon s'il le souhaite ;)
Concernant le CamelCase, pour les entités il est facile de se tromper si les propriétés sont en snake_case et les getter et setter en camelCase. C'est donc une bonne pratique de tout passer en camelCase...