Suche…
Einführung
Anstatt Ihre gesamte Logik für die Anforderungsverarbeitung als Closures in Routendateien zu definieren, können Sie dieses Verhalten mit Controller-Klassen organisieren. Controller können zugehörige Anforderungsverarbeitungslogiken in einer einzigen Klasse zusammenfassen. Controller werden standardmäßig im Verzeichnis app/Http/Controllers
gespeichert.
Grundsteuerungen
<?php
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function show($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
Sie können eine Route zu dieser Controller-Aktion wie folgt definieren:
Route::get('user/{id}', 'UserController@show');
Wenn nun eine Anforderung mit dem angegebenen Routen-URI übereinstimmt, wird die show
Methode für die UserController
Klasse ausgeführt. Natürlich werden auch die Routenparameter an die Methode übergeben.
Controller-Middleware
In den Routendateien kann den Routen des Controllers Middleware zugewiesen werden:
Route::get('profile', 'UserController@show')->middleware('auth');
Es ist jedoch praktischer, die Middleware im Konstruktor Ihres Controllers anzugeben. Mit der Middleware-Methode des Konstruktors Ihres Controllers können Sie der Aktion des Controllers problemlos Middleware zuweisen.
class UserController extends Controller
{
/**
* Instantiate a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('log')->only('index');
$this->middleware('subscribed')->except('store');
}
}
Ressourcencontroller
Das Laravel-Ressourcenrouting weist einem Controller die typischen "CRUD" -Routen mit einer einzelnen Codezeile zu. Sie möchten beispielsweise einen Controller erstellen, der alle HTTP-Anforderungen für "Fotos" verarbeitet, die in Ihrer Anwendung gespeichert sind. Mit dem Befehl make:controller
Artisan können Sie schnell einen solchen Controller erstellen:
php artisan make:controller PhotoController --resource
Dieser Befehl generiert einen Controller unter app/Http/Controllers/PhotoController.php
. Der Controller enthält eine Methode für jede der verfügbaren Ressourcenoperationen.
Beispiel für einen Resource Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Im Beispiel für den Ressourcencontroller wird der Methodenname der in der nachstehenden Tabelle angegebenen Namen verwendet.
Als Nächstes können Sie eine hilfreiche Route zum Controller registrieren:
Route::resource('photos', 'PhotoController');
Diese Einzelroutendeklaration erstellt mehrere Routen, um eine Vielzahl von Aktionen für die Ressource auszuführen. Für den generierten Controller sind bereits Methoden für jede dieser Aktionen hinterlegt, einschließlich Notizen, die Sie über die HTTP-Verben und die URIs informieren, die sie behandeln.
Vom Ressourcen-Controller gehandhabte Aktionen
Verb | URI | Aktion | Routenname |
---|---|---|---|
ERHALTEN | /photos | Index | fotos.index |
ERHALTEN | /photos/create | erstellen | Fotos erstellen |
POST | /photos | Geschäft | Fotos.Store |
ERHALTEN | /photos/{photo} | Show | fotos.show |
ERHALTEN | /photos/{photo}/edit | bearbeiten | fotos.edit |
PUT / PATCH | /photos/{photo} | aktualisieren | fotos.update |
LÖSCHEN | /photos/{photo} | zerstören | fotos.destroy |