Szukaj…


Wprowadzenie

Zamiast definiować całą logikę obsługi żądań jako Zamknięcia w plikach tras, możesz zorganizować to zachowanie za pomocą klas kontrolerów. Kontrolery mogą grupować logikę obsługi żądań w jedną klasę. Kontrolery są domyślnie przechowywane w katalogu app/Http/Controllers .

Podstawowe kontrolery

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

Możesz zdefiniować trasę do tego działania kontrolera w następujący sposób:

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

Teraz, gdy żądanie pasuje do podanego identyfikatora URI trasy, zostanie wykonana metoda show w klasie UserController . Oczywiście parametry trasy zostaną również przekazane do metody.

Oprogramowanie pośrednie kontrolera

Oprogramowanie pośrednie może być przypisane do tras kontrolera w plikach tras:

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

Jednak wygodniej jest określić oprogramowanie pośrednie w konstruktorze kontrolera. Używając metody oprogramowania pośredniego z konstruktora kontrolera, możesz łatwo przypisać oprogramowanie pośrednie do akcji kontrolera.

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

Kontroler zasobów

Routing zasobów Laravel przypisuje typowe trasy „CRUD” do kontrolera za pomocą jednego wiersza kodu. Na przykład możesz utworzyć kontroler, który obsługuje wszystkie żądania HTTP dotyczące „zdjęć” przechowywanych przez aplikację. Za pomocą polecenia make:controller Artisan możemy szybko utworzyć taki kontroler:

php artisan make:controller PhotoController --resource

To polecenie wygeneruje kontroler w app/Http/Controllers/PhotoController.php . Kontroler będzie zawierał metodę dla każdej z dostępnych operacji na zasobach.

Przykład wyglądu kontrolera zasobów

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

Przykład kontrolera zasobów ma taką samą nazwę jak w poniższej tabeli.

Następnie możesz zarejestrować zaradną trasę do kontrolera:

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

Ta deklaracja pojedynczej trasy tworzy wiele tras do obsługi różnych działań na zasobie. Wygenerowany kontroler będzie już miał metody pośredniczące dla każdej z tych akcji, w tym notatki informujące o czasownikach HTTP i identyfikatorach URI, które obsługują.

Działania obsługiwane przez kontroler zasobów

Czasownik URI Akcja Nazwa trasy
OTRZYMAĆ /photos indeks photos.index
OTRZYMAĆ /photos/create Stwórz photos.create
POCZTA /photos sklep photos.store
OTRZYMAĆ /photos/{photo} pokazać photos.show
OTRZYMAĆ /photos/{photo}/edit edytować photos.edit
PUT / PATCH /photos/{photo} aktualizacja photos.update
USUNĄĆ /photos/{photo} zniszczyć photos.destroy


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow