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?
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');
}
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);
}
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.
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
)
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');