Урок 16. Введение в контроллеры Laravel


Я несколько раз на уроках Laravel упоминал контроллеры, но до сих пор большинство примеров показывали закрытие маршрутов. В шаблоне MVC контроллеры, по сути, являются классами, которые организуют логику одного или нескольких маршрутов вместе в одном месте. Контроллеры, как правило, группируют похожие маршруты вместе, особенно если ваше приложение структурировано в традиционном формате, подобном CRUD; в этом случае контроллер может обрабатывать все действия, которые могут быть выполнены с определенным ресурсом.

Что такое CRUD?

CRUD расшифровывается как создание, чтение, обновление, удаление - четыре основные операции, которые веб-приложения чаще всего выполняют на ресурсе. Например, вы можете создать новое сообщение в блоге, прочитать это сообщение, обновить его или удалить.

Может возникнуть соблазн втиснуть всю логику приложения в контроллеры, но лучше думать о контроллерах как о гаишниках, которые направляют HTTP-запросы вокруг вашего приложения. Поскольку существуют и другие способы поступления запросов в ваше приложение—задания cron, вызовы командной строки, задания в очереди и т. Д, то разумно не полагаться на контроллеры для большого поведения. Это означает, что основная задача контроллера состоит в том, чтобы уловить намерение HTTP-запроса и передать его остальной части приложения.

Итак, давайте создадим контроллер. Один из простых способов сделать это-с помощью команды Artisan, поэтому из командной строки выполните следующее:

php artisan make:controller TasksController
Artisan

Laravel поставляется в комплекте с инструментом командной строки под названием Artisan. Artisan можно использовать для выполнения миграций, создания пользователей и других записей базы данных вручную и выполнения многих других разовых задач, выполняемых вручную.

В пространстве имен make Artisan предоставляет инструменты для создания скелетных файлов для различных системных файлов. Это то, что позволяет нам запускать php artisan make:controller. Подробнее об Artisan мы поговорим на других уроках.

Это приведет к созданию нового файла с именем TasksController.php в app/Http/Controllers с содержимым, показанным в примере ниже.

Контроллер, созданный по умолчанию

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TasksController extends Controller
{
    //
}
Измените этот файл, как показано, создав новый общедоступный метод, называемый index(). Мы просто вернем туда какое-нибудь сообщение.

Простой пример контроллера

<?php

namespace App\Http\Controllers;

class TasksController extends Controller
{
    public function index()
    {
        return 'Hello, UpRead.Ru';
    }
}
Затем, как мы узнали ранее, мы подключим к нему маршрут, как показано в примере ниже.

Маршрут для простого контроллера

// routes/web.php
<?php

Route::get('/', 'TasksController@index');
Вот и все. Посетите “/” маршрут, и вы увидите слова “'Hello, UpRead.Ru'

Пространство имен контроллера

В примере выше мы ссылались на контроллер, у которого есть полное имя класса App\Http\Controllers\TasksController, но мы использовали только имя класса. Это не потому, что мы можем просто ссылаться на контроллеры по их имени класса. Скорее, мы можем игнорировать App\Http\Controllers\, когда мы ссылаемся на контроллеры; по умолчанию Laravel настроен на поиск контроллеров в этом пространстве имен.

Это означает, что если у вас есть контроллер с полным именем класса App\Http\Controllers\API\ExercisesController, вы бы указали его в определении маршрута как API\ExercisesController.

Таким образом, наиболее распространенным использованием метода контроллера будет что-то вроде примера ниже, который обеспечивает ту же функциональность, что и закрытие нашего маршрута.

Пример метода общего контроллера

// TasksController.php
...
public function index()
{
    return view('tasks.index')
        ->with('tasks', Task::all());
}
Этот метод контроллера загружает resources/views/tasks/index.blade.php или resources/views/tasks/index.php просмотрите и передайте ему одну переменную с именем tasks, которая содержит результат метода Eloquent Task::all().

Генерация контроллеров ресурсов

Если вы когда-либо использовали php artisan make:controller в Laravel до версии 5.3, вы можете ожидать, что он автоматически создаст методы для всех основных маршрутов ресурсов, таких как create() и update(). Вы можете вернуть это поведение в Laravel 5.3+, передав флаг --resource при создании контроллера:

php artisan make:controller TasksController –resource
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, уроки по Laravel, контроллеры, php, Laravel




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Тест на JS и PHP на гитхабе
Разное меню на разных страницах в WordPress
Дженерики (Generics) в Java