Formation PUB030 : Laravel, 2019 Les routes

4.3 Test d'un URL avec paramètres


Voici un petit test pour vérifier le bon fonctionnement d'une route qui contient des paramètres.

Créez une route qui nécessite un paramètre :

Fichier routes\web.php

Route::get('produits/{id}/modification', [

    'as' => 'produits.edit',

    'uses' => 'ProduitsController@edit',

]);

Dans la méthode edit à laquelle notre route mènera, ajoutez un echo pour afficher la valeur du paramètre.

Remarquez que dans le squelette qui a été généré par artisan, les paramètres et la valeur de retour ne sont pas typés. Il sera avantageux de corriger ceci puisque PHP 7 permet désormais de typer les variables, ce qui facilitera votre travail (une erreur de type causera une erreur de compilation, beaucoup plus facile à détecter et à corriger qu'une erreur d'exécution).

Mais pour l'instant, concentrez-vous sur ce petit test hors des bonnes pratiques :

Contrôleur Laravel (PHP)

class ProduitsController extends Controller

{

    ...

 

    /**

     * Show the form for editing the specified resource.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

    public function edit($id)

    {

        echo "Travail avec le id $id";

    }

 

    ...

}

Finalement, entrez dans votre navigateur l'URL pour accéder à cette méthode d'action.

URL

http://monprojet.test/produits/4/modification

Si tout fonctionne correctement, vous verrez apparaître la phrase « Travail avec le id 4 ».

Test d'une route avec injection de modèle

Pour tester une route avec injection de modèle, quelques modifications sont à appporter à notre test.

Le nom du paramètre dans la route doit être le nom du modèle, entièrement en lettres minuscules :

Fichier routes\web.php

Route::get('produits/{produit}/modification', [

    'as' => 'produits.edit',

    'uses' => 'ProduitsController@edit',

]);

Dans la méthode edit à laquelle notre route mènera, changez le paramètre pour qu'il soit typé et qu'il porte le nom du modèle.

Ajoutez ensuite un dump and die pour afficher la valeur du paramètre. Le dump and die sera plus pratique qu'un echo puisqu'il permet d'afficher les propriétés d'un objet.

Contrôleur Laravel (PHP)

class ProduitsController extends Controller

{

    ...

 

    /**

     * Show the form for editing the specified resource.

     *

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */

    public function edit(Produit $produit)

    {

       ddsafe($produit);

    }

 

    ...

}

Finalement, entrez dans votre navigateur l'URL pour accéder à cette méthode d'action. Remarquez que c'est un identifiant qui doit être utilisé même si la route reçoit un objet.

URL

http://monprojet.test/produits/4/modification

Si tout fonctionne correctement, vous verrez apparaître la liste des propriétés du produit 4.

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre