РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
505 of 1392 menu

Класс Controller

Класс Controller является фундаментальным компонентом архитектуры Laravel, который служит базой для всех контроллеров приложения. Контроллеры организуют логику обработки HTTP-запросов и возвращают соответствующие ответы. Базовый класс предоставляет удобные методы для валидации данных, авторизации действий и управления промежуточным программным обеспечением.

Контроллеры располагаются в директории app/Http/Controllers. Каждый метод контроллера соответствует определенному маршруту и обрабатывает входящий запрос. Базовый класс Controller автоматически подгружается через сервис-провайдер и содержит трейты ValidatesRequests и AuthorizesRequests, которые добавляют функциональность валидации и авторизации.

Синтаксис

Создание контроллера выполняется через консольную команду или вручную. Базовый синтаксис определения контроллера:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class ExampleController extends Controller { public function index() { return view('example.index'); } public function store(Request $request) { // validation and data processing } } ?>

Пример

Давайте создадим контроллер для управления статьями с методами отображения списка и создания новой статьи:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; use IlluminateHttpResponse; class ArticleController extends Controller { public function index() { $articles = Article::all(); return view('articles.index', ['articles' => $articles]); } public function create() { return view('articles.create'); } public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string|max:255', 'content' => 'required|string', 'status' => 'required|in:draft,published' ]); $article = Article::create($validated); return redirect()->route('articles.show', $article->id); } public function show(Article $article) { return view('articles.show', ['article' => $article]); } } ?>

Пример

Использование метода middleware для назначения промежуточного программного обеспечения в конструкторе контроллера:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class AdminController extends Controller { public function __construct() { $this->middleware('auth'); $this->middleware('admin')->only(['edit', 'update', 'delete']); $this->middleware('throttle:10,1')->only('store'); } public function index() { $statistics = [ 'users' => 1500, 'articles' => 250, 'comments' => 800 ]; return view('admin.dashboard', ['stats' => $statistics]); } public function edit($id) { return view('admin.edit', ['id' => $id]); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:100', 'description' => 'required|string' ]); return response()->json(['message' => 'Created successfully'], 201); } } ?>

Пример

Реализация методов authorize и validate для управления доступом и проверки данных:

<?php namespace AppHttpControllers; use AppModelsPost; use AppPoliciesPostPolicy; use IlluminateHttpRequest; use IlluminateAuthAccessAuthorizationException; class PostController extends Controller { public function update(Request $request, Post $post) { $this->authorize('update', $post); $validated = $this->validate($request, [ 'title' => 'required|string|min:5|max:200', 'content' => 'required|string|min:10', 'category_id' => 'required|exists:categories,id' ]); $post->update($validated); return redirect()->route('posts.show', $post->id); } public function destroy(Post $post) { $this->authorize('delete', $post); $post->delete(); return redirect()->route('posts.index'); } } ?>

Смотрите также

  • класс Route,
    который определяет маршруты и связывает их с контроллерами
  • метод middleware,
    который назначает промежуточное программное обеспечение контроллеру
  • метод authorize,
    который проверяет права пользователя на выполнение действия
  • метод validate,
    который выполняет валидацию входящих данных запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить