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 --resourcePodstawowy 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.