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

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

Список контроллеров Laravel

Вот список контроллеров Laravel, упомянутый ниже

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

Ниже вы можете взглянуть на базовый пример класса контроллера. Здесь вы можете заметить, что «MyController» расширяет «Controller». Здесь «Контроллер» является базовым классом. Базовый класс «Controller» предоставляет такие методы, как «middleware», «dispatch» и «validate», что делает его удобным. Вы можете использовать промежуточное программное обеспечение, чтобы назначить его на маршрут контроллера или в конструкторе вашего контроллера.

<_?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\User;
class MyController extends Controller
(
/**
* Show profile
*
*/
public function show($id)
(
return view('user.profile', ('user' => User::foundOrLost($id)));
)
)

Маршрут к MyController может быть определен следующим образом:

Route::get('user/(id)', ' ');

Назначение промежуточного программного обеспечения в файлах маршрута:

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

Когда URI маршрута совпадает с конкретным запросом, выполняется метод 'show' в классе 'MyController', и параметры, указанные в маршруте, также присваиваются методу.

Несколько дополнительных вишен для вас:

  • Нет необходимости упоминать полное пространство имен для контроллера, так как 'RouteServiceProvider' автоматически загружает в группу маршрутов, в которой содержится пространство имен, все файлы маршрутов. Вам просто нужно указать ту часть имени, которая появится после App \ Http \ Controllers.
  • Если вы хотите определить контроллер одиночного действия, вы сможете сделать это, поместив единственный метод __invoke на ваш контроллер.

2. Контроллеры ресурсов

При создании приложения требуется выполнение операций CRUD (создание, чтение, обновление, удаление). Для контроллеров ресурсов Laravel вам просто нужно создать контроллер, и вы можете оставить отдых на Laravel. Маршрут ресурса Laravel назначит маршруты работы CRUD контроллеру, который тоже только с одной строкой кодирования. Один маршрут может быть зарегистрирован для всех методов в файле rout.php.

Давайте рассмотрим пример. Предположим, что для вашего приложения вы хотите создать контроллер, который обрабатывает все входящие HTTP-запросы относительно сохраненных «изображений». Это будет быстро сделано с помощью команды Artisan. Давайте быстро рассмотрим команду Artisan 'make: controller', чтобы создать один подобный контроллер следующим образом:

php artisan make:controller ImageController --resource

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

Теперь вы можете объявить маршрут для обработки различных действий, например:

Route::resource('images', 'ImageController');

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

Если вы хотите зарегистрировать более одного контроллера ресурсов за один раз, вы можете сделать это с помощью массива, как показано ниже:

Route::resources((
'images' => 'ImageController',
'posts' => 'PostController'
));

Таблица действий

глаголURI / путьДействие СобытиеНазвание маршрута
ПОЧТА/картинкимагазинimages.store
ПОЛУЧИТЬ/картинкипоказательimages.index
ПОЛУЧИТЬ/ изображения / создатьСоздайтеimages.create
ПОЛУЧИТЬ/ изображений / (изображения)Показатьimages.show
PUT / PATCH/ изображений / (изображения)Обновитьimages.update
ПОЛУЧИТЬ/ Изображений / (изображение) / редактироватьредактироватьimages.edit
УДАЛЯТЬ/ изображений / (изображения)уничтожитьimages.destroy

3. Неявные контроллеры

С помощью этих контроллеров вы можете обрабатывать каждое действие, просто определяя один маршрут. Сначала вы должны определить маршрут с помощью Route :: controller следующим образом:

Route::controller('users', 'MyController');

Здесь два аргумента передаются контроллеру.

  1. Базовый URI
  2. Имя класса контроллера

Теперь вам просто нужно добавить методы в MyController с префиксом HTTP-глагола.

class MyController extends Controller (
public function getIndex()
(
//
)
public function anyLogin()
(
//
)
public function postProfile()
(
//
)
)

Методы 'index' будут отвечать на запросы 'users', которые являются корневым / базовым URI, обрабатываемым контроллером.

Действие с несколькими словами можно получить с помощью «тире» в URI. См. Ниже действие контроллера в качестве примера:

public function getAdminProfile() ()

Это действие контроллера в MyController будет отвечать на URI «users / admin-profile».

4. Внедрение зависимостей и контроллеров

Внедрение зависимостей облегчает тестирование и поддержку ваших веб-приложений.

1. Конструктор Инъекция

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

<_?php
namespace App\Http\Controllers;
use App\Repositories\UserRepository;
class MyController extends Controller
(
/**
* The user repository instance.
*/
protected $users;
/**
* Create a new controller instance.
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
(
$this->users = $users;
)
)

2. Метод введения

Помимо введения зависимостей в конструктор, вы также можете напечатать их в методах вашего контроллера. Например, экземпляр Illuminate \ Http \ Request может быть введен в метод контроллера следующим образом:

<_?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MyController extends Controller
(
/**
* Store a new user.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
(
$name = $request->name;
//
)
)

Особенности контроллеров Laravel

Ниже приведены некоторые особенности контроллера Laravel:

  • Поддержка MVC: Laravel поддерживается архитектурой MVC. Это ускоряет разработку, поскольку один пользователь может работать с логикой, а другой - с просмотром. Для модели без дублирования поддерживается несколько представлений, поскольку бизнес-логика отделена от логики представления.
  • Аутентификация: Laravel имеет встроенную систему аутентификации, вам нужно только позаботиться о других аспектах, таких как настройка представлений, моделей и контроллеров.
  • Безопасность. Безопасность - это главный фактор, который следует учитывать при разработке приложения. Laravel обеспечивает безопасность благодаря встроенной защите приложений.
  • Artisan: Artisan помогает выполнять повторяющиеся задачи, не выполняя их вручную разработчиками. Их можно использовать для создания структуры базы данных, кода, миграции, чтобы сделать ее управляемой.
  • Шаблоны: с помощью инновационного и мощного шаблонизатора Laravel разработчики могут создавать динамические веб-приложения.

Рекомендуемые статьи

Это руководство для контроллеров Laravel. Здесь мы обсудим достаточное количество концепций контроллеров Laravel, которые позволят вам создать свой собственный контроллер для вашего приложения, который будет одновременно безопасным и мощным. Вы также можете посмотреть следующую статью, чтобы узнать больше -

  1. Что такое Laravel Framework?
  2. Команды Laravel
  3. Что такое Ларавел?
  4. Что такое сервлет?