Sök…


Introduktion

Istället för att definiera all din begäran som hanterar logik som Stängningar i vägfiler, kanske du vill organisera detta beteende med hjälp av Controller-klasser. Styrenheter kan gruppera relaterad förfrågningshanteringslogik i en enda klass. Controllers lagras som standard i katalogen app/Http/Controllers .

Grundläggande styrenheter

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

Du kan definiera en rutt till denna kontrollåtgärd så:

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

Nu, när en begäran matchar den angivna vägen Uri, show metoden på UserController klassen kommer att utföras. Naturligtvis kommer ruttparametrarna också att överföras till metoden.

Controller Middleware

Middleware kan tilldelas styrenhetens rutter i dina ruttfiler:

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

Det är emellertid mer bekvämt att specificera mellanprogram i din controller's konstruktör. Med hjälp av mellanprogrammetoden från din controllers konstruktör kan du enkelt tilldela mellanprogrammet till kontrollerns handling.

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

Resource Controller

Laravel resursruting tilldelar de typiska "CRUD" -vägarna till en styrenhet med en enda kodrad. Till exempel kanske du vill skapa en kontroller som hanterar alla HTTP-förfrågningar för "foton" lagrade av din applikation. Med hjälp av make:controller Artisan-kommandot kan vi snabbt skapa en sådan controller:

php artisan make:controller PhotoController --resource

Detta kommando genererar en controller på app/Http/Controllers/PhotoController.php . Styrenheten kommer att innehålla en metod för var och en av de tillgängliga resursoperationerna.

Exempel på hur en resurskontroller ser ut

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

Exemplet med resurskontrollanten delar metodnamnet på dem i tabellen nedan.

Därefter kan du registrera en resursrik väg till regulatorn:

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

Denna enda ruttdeklaration skapar flera rutter för att hantera olika åtgärder på resursen. Den genererade styrenheten har redan metoder stoppade för var och en av dessa åtgärder, inklusive anteckningar som informerar dig om HTTP-verb och URI: er som de hanterar.

Åtgärder som hanteras av resurskontrollant

Verb URI Verkan Ruttnamn
SKAFFA SIG /photos index photos.index
SKAFFA SIG /photos/create skapa photos.create
POSTA /photos Lagra photos.store
SKAFFA SIG /photos/{photo} visa photos.show
SKAFFA SIG /photos/{photo}/edit redigera photos.edit
PUT / PATCH /photos/{photo} uppdatering photos.update
RADERA /photos/{photo} förstöra photos.destroy


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow