Zoeken…


Invoering

In plaats van al uw logica voor verzoekafhandeling te definiëren als Sluitingen in routebestanden, wilt u dit gedrag misschien organiseren met behulp van Controller-klassen. Controllers kunnen gerelateerde logica voor verzoekafhandeling in één klasse groeperen. Controllers worden standaard opgeslagen in de app/Http/Controllers directory.

Basiscontrollers

<?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)]);
    }
}

U kunt als volgt een route naar deze controlleractie definiëren:

Route::get('user/{id}', 'UserController@show');

Nu, als een verzoek overeenkomt met de opgegeven route URI, de show methode op UserController klasse zal worden uitgevoerd. Natuurlijk worden de routeparameters ook aan de methode doorgegeven.

Controller Middleware

Middleware kan worden toegewezen aan de routes van de controller in uw routebestanden:

Route::get('profile', 'UserController@show')->middleware('auth');

Het is echter handiger om middleware op te geven in de constructor van uw controller. Met de middleware-methode van de constructor van uw controller kunt u eenvoudig middleware toewijzen aan de actie van de controller.

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');
    }
}

Broncontroller

Laravel resource routing wijst de typische "CRUD" -routes toe aan een controller met een enkele coderegel. U wilt bijvoorbeeld een controller maken die alle HTTP-aanvragen voor "foto's" verwerkt die door uw toepassing zijn opgeslagen. Met de opdracht make:controller Artisan kunnen we snel een dergelijke controller maken:

php artisan make:controller PhotoController --resource

Met deze opdracht wordt een controller gegenereerd op app/Http/Controllers/PhotoController.php . De controller bevat een methode voor elk van de beschikbare bronbewerkingen.

Voorbeeld van hoe een Resource Controller eruit ziet

<?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)
    {
        //
    }
}

Het voorbeeld van de resourcecontroller deelt de methode naam van die in de onderstaande tabel.

Vervolgens kunt u een vindingrijke route naar de controller registreren:

Route::resource('photos', 'PhotoController');

Deze enkele routeaangifte maakt meerdere routes om verschillende acties op de resource af te handelen. De gegenereerde controller heeft al methoden voor elk van deze acties, inclusief opmerkingen die u informeren over de HTTP-werkwoorden en URI's die ze verwerken.

Acties afgehandeld door Resource Controller

Werkwoord URI Actie Routenaam
KRIJGEN /photos inhoudsopgave photos.index
KRIJGEN /photos/create creëren photos.create
POST /photos op te slaan photos.store
KRIJGEN /photos/{photo} tonen photos.show
KRIJGEN /photos/{photo}/edit Bewerk photos.edit
PUT / PATCH /photos/{photo} bijwerken photos.update
DELETE /photos/{photo} vernietigen photos.destroy


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow