wake-up-neo.com

Wie verwende ich den Parameter request route in Laravel 5 form request?

Ich bin neu in Laravel 5 und ich versuche, die neue Formularanforderung zu verwenden, um alle Formulare in meiner Bewerbung zu validieren.

Jetzt stecke ich an einem Punkt fest, an dem ich eine Ressource LÖSCHEN muss, und habe eine DeleteResourceRequest erstellt, um nur die authorize-Methode zu verwenden.

Das Problem ist, dass ich herausfinden muss, welche ID im route-Parameter angefordert wird, aber ich kann nicht sehen, wie ich das in die authorize-Methode einbringe.

Ich kann die ID in der Controller-Methode wie folgt verwenden:

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

Wie funktioniert dies in der authorize-Methode der Formularanforderung?

33
Rohan

Das ist sehr einfach, verwenden Sie einfach die route() -Methode. Angenommen, Ihr Routenparameter heißt id:

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

Sie können über die Instanz Illuminate\Http\Request auf einen Routenparameter Value zugreifen

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

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

Laravel 5.2 von einem Controller aus:

use Route;

...

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

Ich fand dies nützlich, wenn Sie dieselbe Controller-Methode für mehr als eine Route mit mehr als einem URL-Parameter verwenden möchten und möglicherweise nicht alle Parameter immer vorhanden sind oder in einer anderen Reihenfolge angezeigt werden.

d.h. getParameter('id') gibt Ihnen die richtige Antwort, unabhängig von der Position von {id} in der URL.

Siehe Laravel Docs: Zugriff auf die aktuelle Route

5
William Turrell

Abhängig davon, wie Sie den Parameter in Ihren Routen definiert haben.

Für meinen Fall wäre dies: 'user' nicht 'id'

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

enter image description here

1
Emmanuel Opio

Ich bin hierher gekommen, um nach einer Antwort zu suchen, und habe sie in den Kommentaren gefunden. Deshalb wollte ich anderen erklären, indem ich eine Ressourcenroute verwendete, um diese in einer Formularanforderung zu verwenden

wie von lukas in seinem kommentar erwähnt: bei gegebenem resource controller Route::resource('post', ...) wird der parameter, den du verwenden kannst, post heißen

Dies war nützlich für mich, aber nicht ganz vollständig. Es scheint, dass der Parameter die singuläre Version des letzten Teils des Ressourcenstubs ist.

In meinem Fall wurde die Route als $router->resource('inventory/manufacturers', 'API\Inventory\ManufacturersController'); definiert.

Und der verfügbare Parameter war manufacturer (die singuläre Version des letzten Teils des Stubs inventory/manufacturers)

0
Bryan