Back to top

Контроллеры Laravel для обработки HTTP-запросов

PHP классы контроллеров Laravel, размещенные в папке app\Http\Controllers, позволяют организовать логику обработки HTTP-запросов. Например, для обработки запросов к сайту по адресам /posts/{id} можно задать следующий отклик в файле routes\web.php:


Route::get('posts/{id}', 'PostsController@show');

Теперь, при запросе методом GET страницы с адресом posts/{id}, например posts/5, будет вызван метод show контроллера PostsController. А параметр id будет передан функции show в качестве аргумента. Причем можно автоматически конвертировать этот параметр в объект класса Post, указав его в качестве аргумента метода.


class PostsController extends Controller
{
    public function show(Post $post)
    {
        return view('posts.show', compact('post'));
    }
}

В Laravel приняты следующие варианты запросов:

Адрес Тип запроса Метод контроллера Действие
/posts GET index Просмотреть все сообщения
/posts POST store Добавить новое сообщение в базу данных
/posts/create GET create Загрузить форму добавления нового сообщения
/posts/{id} GET show Отобразить сообщение по id
/posts/{id} PUT/PATCH update Редактировать сообщение по id
/posts/{id} DELETE destroy Удалить сообщение по id
/posts/{id}/edit GET edit Загрузить форму редактирования сообщения по id

Команда make:controller интерфейса командной строки Artisan позволяет сгенерировать контроллер со всеми перечисленными методами:


php artisan make:controller PostsController -r

7 декабря 2017 г.