web-dev-qa-db-fra.com

Comment utiliser le paramètre de route de requête dans Laravel 5 demande de formulaire?

Je suis nouveau sur Laravel 5) et j'essaie d'utiliser la nouvelle demande de formulaire pour valider tous les formulaires de ma demande.

Maintenant, je suis bloqué à un point où j'ai besoin de supprimer une ressource et j'ai créé un DeleteResourceRequest juste pour utiliser la méthode authorize.

Le problème est que je dois trouver quel identifiant est demandé dans le paramètre route mais je ne vois pas comment le transférer dans la méthode authorize.

Je peux utiliser l'identifiant dans la méthode du contrôleur comme ceci:

public function destroy($id, DeletePivotRequest $request)
{
    Resource::findOrFail($id);
}

Mais comment faire en sorte que cela fonctionne dans la méthode authorize de la demande de formulaire?

33
Rohan

C'est très simple, utilisez simplement la méthode route(). En supposant que votre paramètre de route s'appelle id:

public function authorize(){
    $id = $this->route('id');
}
61
lukasgeiter

Vous pouvez accéder à un paramètre Route via l’instance Illuminate\Http\Request

public function destroy($id, DeletePivotRequest $request)
{
    if ($request->route('id'))
    {
        //
    }

    Resource::findOrFail($id);
}
7
Emeka Mbah

Laravel 5.2, depuis un contrôleur:

use Route;

...

Route::current()->getParameter('id');

J'ai trouvé cela utile si vous souhaitez utiliser la même méthode de contrôleur pour plusieurs itinéraires avec plus d'un paramètre d'URL, et peut-être que tous les paramètres ne sont pas toujours présents ou peuvent apparaître dans un ordre différent ...

c'est-à-dire que getParameter('id') vous donnera la bonne réponse, quelle que soit la position de {id} dans l'URL.

Voir Laravel Docs: Accéder à la route actuelle

5
William Turrell

Selon la façon dont vous avez défini le paramètre dans vos itinéraires.

Pour mon cas ci-dessous, ce serait: 'user' pas 'id'

$id = $this->route('user');

enter image description here

1
Emmanuel Opio

Je suis venu ici à la recherche d'une réponse et l'ai en quelque sorte trouvé dans les commentaires. Je souhaitais donc clarifier pour les autres utilisateurs d'un itinéraire de ressource essayant de l'utiliser dans une demande de formulaire.

comme mentionné par lukas dans son commentaire: Étant donné un contrôleur de ressources Route::resource('post', ...), le paramètre que vous pouvez utiliser sera nommé post

C'était utile pour moi mais pas tout à fait complet. Il semble que le paramètre sera la version singulière de la dernière partie du stub de ressource.

Dans mon cas, la route a été définie comme $router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController');

Et le paramètre disponible était manufacturer (la version singulière de la dernière partie du stub inventory/manufacturers)

0
Bryan