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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow