0Pricing
PHP Academy · Lekcja

Kontrolery i akcje

Twórz kontrolery za pomocą artisan i obsługuj żądania w metodach akcji

Kontrolery i akcje to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Czym jest kontroler?

Kontroler grupuje powiązaną logikę obsługi żądań. Zamiast używać domknięć w plikach tras, przekazujesz obsługę do metod kontrolera (akcji).

Generowanie kontrolera

Użyj Artisan do utworzenia szkieletu kontrolera.

$ php artisan make:controller UserController
$ php artisan make:controller PostController --resource

Podstawowy kontroler

Kontroler dziedziczy po Controller i zawiera publiczne metody dla poszczególnych akcji tras.

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
    public function index(): \Illuminate\View\View
    {
        $users = User::all();
        return view("users.index", compact("users"));
    }
}

Dostęp do żądania

Określ typ Illuminate\Http\Request w metodzie akcji — Laravel wstrzyknie obiekt automatycznie.

<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
    $name  = $request->input("name");
    $email = $request->input("email");
    User::create(["name" => $name, "email" => $email]);
    return redirect()->route("users.index");
}

Walidacja formularza

Użyj $request->validate(), aby zwalidować dane wejściowe. W przypadku niepowodzenia Laravel automatycznie przekieruje użytkownika z powrotem i przekaże błędy.

<?php
public function store(Request $request): \Illuminate\Http\RedirectResponse
{
    $validated = $request->validate([
        "name"  => "required|string|max:255",
        "email" => "required|email|unique:users",
    ]);
    User::create($validated);
    return redirect()->route("users.index");
}

Metody kontrolera zasobów

Kontroler zasobów ma 7 konwencjonalnych metod: index, create, store, show, edit, update, destroy.

Kontrolery pojedynczych akcji

Kontrolery wywoływalne mają jedną metodę __invoke() — idealnie nadają się do akcji, które wykonują dokładnie jedno zadanie.

<?php
class SendWelcomeEmail extends Controller
{
    public function __invoke(User $user): void
    {
        Mail::to($user)->send(new WelcomeMail($user));
    }
}
// Route:
Route::post("/users/{user}/welcome", SendWelcomeEmail::class);

Middleware kontrolera

Middleware można przypisać do konkretnych akcji za pomocą metody middleware() w konstruktorze.

<?php
public function __construct()
{
    $this->middleware("auth")->except(["index", "show"]);
}

Wstrzykiwanie zależności

Określ typy usług w parametrach metod akcji — Laravel rozwiąże je za pomocą kontenera usług.

<?php
public function store(Request $request, Mailer $mailer): JsonResponse
{
    // $mailer is auto-injected
}

Zwracanie odpowiedzi

Kontrolery mogą zwracać: widoki, przekierowania, odpowiedzi JSON oraz pliki do pobrania.

<?php
return view("users.show", compact("user"));
return redirect()->back()->with("status", "Saved!");
return response()->json($user);
return response()->download(storage_path("report.pdf"));

Przestrzenie nazw kontrolerów

Domyślnie wszystkie kontrolery znajdują się w App\Http\Controllers. Podkatalogi tworzą podprzestrzenie nazw: App\Http\Controllers\Admin\UserController.

Kontrolery powinny być proste

Kontrolery powinny przekazywać logikę biznesową do klas usług lub akcji. Kontroler powinien tylko: zwalidować dane wejściowe, wywołać usługę i zwrócić odpowiedź.

Podsumowanie

Generuj kontrolery za pomocą Artisan. Określaj typy Request i usług, aby korzystać z automatycznego wstrzykiwania. Używaj validate() do walidacji danych wejściowych. Kontrolery powinny być proste — logikę przekazuj do usług.

Szybkie sprawdzenie

Jakie polecenie Artisan generuje kontroler zasobów?

Często zadawane pytania

Czy lekcja „Kontrolery i akcje” jest bezpłatna?

Tak — pełny tekst „Kontrolery i akcje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Kontrolery i akcje”?

Twórz kontrolery za pomocą artisan i obsługuj żądania w metodach akcji Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Kontrolery i akcje”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Struktura projektu Laravel
  2. Definiowanie tras w Laravelu
  3. Kontrolery i akcje
  4. Szablony i widoki Blade
← Powrót do PHP Academy