2015-05-05 10 views
25

Sono nuovo in Laravel 5 e sto cercando di utilizzare la nuova richiesta di modulo per convalidare tutti i moduli nella mia applicazione.Come utilizzare il parametro del percorso di richiesta nella richiesta di modulo Laravel 5?

Ora sono bloccato in un punto in cui ho bisogno di eliminare una risorsa e ho creato un DeleteResourceRequest solo per utilizzare il metodo di autorizzazione.

Il problema è che ho bisogno di trovare quale ID viene richiesto nel parametro route ma non riesco a vedere come ottenerlo nel metodo di autorizzazione.

posso usare l'id nel metodo di controllo in questo modo:

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

Ma come arrivare a questo lavoro nel metodo autorizzare del Modulo di richiesta?

risposta

44

Questo è molto semplice, basta usare il metodo route(). Supponendo che il parametro il percorso si chiama id:

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

Grazie per la rapida risposta. Ho fatto dd ($ this-> route ('id')); nel metodo di autorizzazione. Restituisce null. :( – Rohan

+5

Se stai usando percorsi di risorse, il nome del parametro dovrebbe essere il nome della risorsa. Ad esempio, 'post' se hai ottenuto' Route :: resource ('post', ...) ' – lukasgeiter

+0

Sì, ho capito alla fine scaricando indirizza l'oggetto stesso. Grazie mille :) – Rohan

5

È possibile l'accesso a un valore di parametro Percorso tramite Illuminate \ Http \ Richiesta esempio

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

    Resource::findOrFail($id); 
} 
4

laravel 5.2, dall'interno di un controllore:

use Route; 

... 

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

L'ho trovato utile se si desidera utilizzare lo stesso metodo di controller per più di una route con più di un parametro URL e forse tutti i parametri non sono sempre presente o può apparire in un ordine diverso ...

, ovvero getParameter('id') darà la risposta corretta, indipendentemente dalla posizione di {id} nell'URL.

Vedi Laravel Docs: Accessing the Current Route

0

Sono venuto qui in cerca di una risposta e il tipo di trovata nei commenti, così ha voluto chiarire per gli altri che utilizzano un percorso di risorse cercando di utilizzare questo in un modulo di richiesta

come detto da Lukas nel suo commento: Dato un controller risorsa Route::resource('post', ...) il parametro è possibile utilizzare si chiamerà post

Questo è stato utile per me, ma non del tutto completa. Sembra che il parametro sia la versione singolare dell'ultima parte dello stub della risorsa.

Nel mio caso, il percorso è stato definito come $router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController');

E il parametro a disposizione era manufacturer (la versione singolare l'ultima parte dello stub inventory/manufacturers)