Comment utiliser le paramètre request route dans Laravel 5 form request?

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 coincé à un point où j'ai besoin de supprimer une ressource et j'ai créé un DeleteResourceRequest pour juste utiliser la méthode authorize.

Le problème est que j'ai besoin de trouver quel id est demandé dans le paramètre route mais je ne vois pas comment l'obtenir dans la méthode authorize.

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

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

Mais comment faire fonctionner cela dans la méthode authorize de la demande de formulaire?

28
demandé sur Rohan 2015-05-05 14:39:38

5 réponses

C'est très simple, il suffit d'utiliser la méthode route(). En supposant que votre paramètre de route est appelé id:

public function authorize(){
    $id = $this->route('id');
}
49
répondu lukasgeiter 2015-05-05 11:43:30

Vous pouvez accéder à une valeur de paramètre de Route via Illuminate\Http \ Request instance

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

    Resource::findOrFail($id);
}
5
répondu Digitlimit 2015-05-05 11:53:19

Laravel 5.2, à partir d'un contrôleur:

use Route;

...

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

J'ai trouvé cela utile si vous voulez utiliser la même méthode de contrôleur pour plus d'une route 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 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
répondu William Turrell 2016-08-05 18:31:14

Je suis venu ici à la recherche d'une réponse et je l'ai trouvé dans les commentaires, donc je voulais clarifier pour les autres en utilisant une route de ressources en 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, 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 talon de ressource.

Dans mon cas, la route était défini 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 talon inventory/manufacturers)

0
répondu Bryan 2018-03-04 01:36:24

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

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

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

entrez la description de l'image ici

0
répondu Emmanuel Opio 2018-07-15 15:00:40