Aide sur erreur

Yvesremort
Invité n'ayant pas de compte PHPfrance

17 mai 2019, 12:34

Bien le bonjour, j'aurai besoin de vos lumière sur cette erreur car je ne trouve pas la solution, je crois comprendre le problème mais je ne vois pas où le solutionner, merci d'avance pour votre temps.

L'erreur en question : Neither the property "Name" nor one of the methods "Name()", "getName()"/"isName()"/"hasName()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView".

Entity :
<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Musicien
 *
 * @ORM\Table(name="musicien")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\MusicienRepository")
 */
class Musicien
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

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

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

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

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="created_at", type="datetime")
     */
    private $createdAt;

    /**
     * Musicien constructor.
     */
    public function __construct()
    {

    }

    /**
     * Get id.
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name.
     *
     * @param string $name
     *
     * @return Musicien
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name.
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set instrument.
     *
     * @param string $instrument
     *
     * @return Musicien
     */
    public function setInstrument($instrument)
    {
        $this->instrument = $instrument;

        return $this;
    }

    /**
     * Get instrument.
     *
     * @return string
     */
    public function getInstrument()
    {
        return $this->instrument;
    }

    /**
     * Set mail.
     *
     * @param string $mail
     *
     * @return Musicien
     */
    public function setMail($mail)
    {
        $this->mail = $mail;

        return $this;
    }

    /**
     * Get mail.
     *
     * @return string
     */
    public function getMail()
    {
        return $this->mail;
    }

    /**
     * Set createdAt.
     *
     * @param \DateTime $createdAt
     *
     * @return Musicien
     */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;

        return $this;
    }

    /**
     * Get createdAt.
     *
     * @return \DateTime
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
     * @ORM\ManyToOne(targetEntity="Instrument", inversedBy="musiciens")
     * @ORM\JoinColumn(name="instrument_id", referencedColumnName="id")
     */
    private $musicien;
}
Controller:
<?php

namespace AppBundle\Controller;

use AppBundle\Form\MusicienType;
use AppBundle\Entity\Musicien;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;

class MusicienController extends Controller
{
    /**
     * @Route("/musicien/view", name="musicienview")
     */
    public function viewAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $musiciens = $em->getRepository('AppBundle:Musicien')->findAll();
        $em = $this->getDoctrine()->getManager();
        if ($musiciens == null) {
            throw new NotFoundHttpException('erreur de récupération des données');
        }
        $response = $this->render('projet/musicienview.html.twig', [
            'musiciens' => $musiciens
        ]);
        return $response;
    }

    /**
     * @Route("musicien/view/{id}", name="musicien_view_url")
     */
    public function viewUrlAction($id) {
        // récupérer un seul article depuis la base de données
        $em = $this->getDoctrine()->getManager();
        $musicien = $em->getRepository("AppBundle:Musicien")->find($id);

        // générer une page d'erreur 404 si l'article n'existe pas
        if ($musicien == null) {
            // le code s'arrêtera ici si on rentre dans le if
            throw new NotFoundHttpException("L'ID N'EXISTE PAS");
        }
        $response = $this->render('projet/musicienviewid.html.twig', [
            'musicien' => $musicien
        ]);
        return $response;
    }


    /**
     * @Route("musicien/insert", name="musicien_insert")
     */
    public function insertAction(Request $request) {
        // 1- créer une instance de Article
        $musicien = new Musicien();

        $formBuilder = $this->get('form.factory')->createBuilder(MusicienType::class, $musicien);

        /
        $form = $formBuilder->getForm();

     
        $form->handleRequest($request);

       
        if ($form->isSubmitted()) {
           
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($musicien);
                $em->flush();
            }
        }

        
        return $this->render('projet/musicieninsert.html.twig', [
            'formMusicien' => $form->createView()
        ]);

    }
}
Form :
<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;


class MusicienType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name',TextType::class)
            ->add('instrument',TextType::class)
            ->add('mail',EmailType::class)
            ->add('createdAt',DateType::class);

    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Musicien'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'appbundle_musicien';
    }


}
View :
<html>
<head>
    <meta charset="UTF-8" />
    <title>{% block title %}projet perso{% endblock %}</title>
    {% block stylesheets %}Ceci est la page de vue d'un musicien{% endblock %}
    <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{% block body %}Ajouter un Musicien{% endblock %}

{{ form_row(formMusicien.Name) }}
{{ form_row(formMusicien.Instrument) }}
{{ form_row(formMusicien.Mail) }}



<input type="submit" value="Enregistrer le musicien" />
{% block javascripts %}{% endblock %}
</body>
</html>

Mammouth du PHP | 652 Messages

17 mai 2019, 15:30

Salut, sans les majuscules ici c'est mieux ?
{{ form_row(formMusicien.name) }}
{{ form_row(formMusicien.instrument) }}
{{ form_row(formMusicien.mail) }}

Petit nouveau ! | 1 Messages

17 mai 2019, 18:57

Merci pour ta réponse,c'était bien ça, bien vu ! Et merci pour ton temps !