Поиск…


Вступление

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

Основные контроллеры

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

Вы можете определить маршрут для этого действия контроллера следующим образом:

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

Теперь, когда запрос соответствует указанному URI маршрута, будет запущен метод show в классе UserController . Конечно, параметры маршрута также будут переданы методу.

Контроллер Middleware

Средство промежуточного уровня может быть назначено маршрутам контроллера в файлах маршрутов:

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

Однако удобнее указывать промежуточное ПО в конструкторе вашего контроллера. Используя метод промежуточного программного обеспечения из конструктора вашего контроллера, вы можете легко назначить промежуточное программное обеспечение для действия контроллера.

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

Контроллер ресурсов

Маршрутизация ресурсов Laravel назначает типичные маршруты «CRUD» контроллеру с одной строкой кода. Например, вы можете создать контроллер, который обрабатывает все HTTP-запросы для «фотографий», хранящихся в вашем приложении. Используя команду make:controller Artisan, мы можем быстро создать такой контроллер:

php artisan make:controller PhotoController --resource

Эта команда будет генерировать контроллер в app/Http/Controllers/PhotoController.php . Контроллер будет содержать метод для каждой из доступных операций с ресурсами.

Пример того, как выглядит диспетчер ресурсов

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

Пример контроллера ресурсов разделяет имя метода, приведенное в таблице ниже.

Затем вы можете зарегистрировать находчивый маршрут к контроллеру:

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

Это одно объявление маршрута создает несколько маршрутов для обработки различных действий на ресурсе. Сгенерированный контроллер уже будет иметь методы, заглушенные для каждого из этих действий, включая заметки, информирующие вас о HTTP-глаголах и URI, которые они обрабатывают.

Действия, управляемые контроллером ресурсов

глагол URI действие Название маршрута
ПОЛУЧИТЬ /photos индекс photos.index
ПОЛУЧИТЬ /photos/create Создайте photos.create
СООБЩЕНИЕ /photos хранить photos.store
ПОЛУЧИТЬ /photos/{photo} шоу photos.show
ПОЛУЧИТЬ /photos/{photo}/edit редактировать photos.edit
PUT / PATCH /photos/{photo} Обновить photos.update
УДАЛЯТЬ /photos/{photo} уничтожить photos.destroy


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow