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 :
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 :
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.
http://monprojet.test/produits/4/modification
Si tout fonctionne correctement, vous verrez apparaître la phrase « Travail avec le id 4 ».
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 :
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.
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.
http://monprojet.test/produits/4/modification
Si tout fonctionne correctement, vous verrez apparaître la liste des propriétés du produit 4.
▼Publicité