Synfony 4 par l'exemple / Crud des bien immobiliers

Ce sujet est résolu
Default
,

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire
Je bloque sur une erreur quand je veux la vue new (environ 24ème minute) pour la création d'un nouveau formulaire. J'ai bien cherché dans la synthaxe si j'avais une erreur mais je n'ai pas trouvé.

Entourez votre code pour bien le mettre en forme
Ma fonction new dans le AdminPropertyController
/*
        * @Route("/admin/property/create", name="admin.property.new")
        */

        public function new(Request $request)
        {
            $property = new Property();
            $form = $this->createForm(PropertyType::class, $property);
            $form->handleRequest($request);
            if($form->isSubmitted() && $form->isValid())
                {
                    $this->em->persist($property);
                    $this->em->flush();
                    return $this->redirectToRoute('admin.property.index');
                }
                return $this->render('admin/property/new.html.twig', [
                    'property' => $property,
                    'form' => $form->createView()
                ]);
        }

Ma vue : Le fichier index.html.twig qui renvoie vers le chemin admin.property.new et qui se trouve dans templates/admin/property

{% extends 'base.html.twig' %}

{% block title 'Gérer les biens' %}

{% block body %}

<div class="container mt-4">
    <h1>Gérer les biens</h1>

    <table class="table table striped">

        <thead>
        <tr>
            <td>Titre</td>
            <td>Actions</td>
        </tr>   
        </head>
        <tbody>
        {% for property in properties %}
        <tr>
            <td>{{ property.title }}</td>
            <td>
            <a href="{{ path('admin.property.edit', {id: property.id}) }}" class="btn btn-secondary">Editer</a>
            </td>
        </tr>
        {% endfor %}
        </tbody>
    </table>

    <div class="text-right">
    <a href="{{ path('admin.property.new') }}" class="btn btn-primary">Créer un nouveau bien</a>
    </div>
</div>

{% endblock %}

Le fichier new.html.twig qui se trouve dans templates/admin/property

{% extends 'base.html.twig' %}
{% block body %}
{% endblock %}
{% title body %}
{% endblock %}

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Voici mon le message d'erreur :
An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "admin.property.new" as such route does not exist.").

Merci par avance

6 Réponse

Default
,

c'était bien ça. J'ai failli m'attacher les cheuveux.
merci bcp

Default
,

Salut,

dans ton cas il ne trouve pas la route nommée "admin.property.new"

Je te conseille de fait un debug du router pour verifier
1- Si la route existe
2- Comment elle est nommée
3- Comme s'appel le fichier twig (ainsi que son chemin)

php bin/console debug:router
Default
,

Merci pour ton retour.
effectivement, j'ai fais un php bin/console debug:router et la route "admin.property.new" n'existe pas.
Connais-tu la démarche à suivre pour qu'elle y soit implémenter. Je commece sur symfony.

merci d'avance.

Default
,

admin.property.edit et admin.property.index sont bien, eux, dans le router.

Default
,

En fait c'est peut etre juste une erreur au niveau de ton annotation.

tu as ecris:

/*
        * @Route("/admin/property/create", name="admin.property.new")
        */

Alors que les annotations commencent par: /** et non /*
Si joint un exemple:

    /**
     * @Route(path="/", name="index")
     */

ce qui donnerai pour ton cas:

    /**
     * @Route(path="/admin/property/create", name="admin.property.new")
     */
Default
,

Merci
C'était bien ça.