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?
Das ist sehr einfach, verwenden Sie einfach die route()
-Methode. Angenommen, Ihr Routenparameter heißt id
:
public function authorize(){
$id = $this->route('id');
}
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);
}
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.
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
)