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

Цялото ви приложение може да бъде създадено само с помощта на Closures във файла route.php, то ще стане разхвърляно, но ще бъде изпълнимо. Ами ако евентуално можете да организирате целия си процес с помощта на класове Controller? Да видим как. Контролерите могат да се групират в рамките на един клас, всички свързани логики на обработката на заявките. Приложението Directory / Http / Controllers отговаря за съхраняването на контролери. В MVC рамката 'C' означава Controller, който действа като насочващ трафика на фона на изгледи и модели. В тази тема ще научим за контролерите на Laravel.

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

Ето списъка на контролерите на Laravel, споменат по-долу

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

По-долу можете да разгледате основен пример за класа на контролера. Тук можете да забележите, че „MyController“ разширява „Controller“. Тук „Controller“ е базовият клас. Базовият клас „Контролер“ предоставя методи като „междинен софтуер“, „изпращане“ и „валидиране“, което го прави удобен. Можете да използвате среден софтуер, за да го присвоите към маршрута на контролера или в конструктора на вашия контролер.

<_?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" се изпълнява и параметрите, посочени в route, също се присвояват на метода.

Няколко допълнителни череши за вас:

  • Не е необходимо да се споменава пълното пространство на имена на контролера, тъй като „RouteServiceProvider“ автоматично се зарежда в група маршрути, която съдържа пространство на имена, съдържащи се във всички файлове на маршрута. Просто трябва да посочите онази част от името, която ще се появи след App \ Http \ Controllers.
  • Ако искате да определите контролера с едно действие, ще можете да го направите, като поставите един метод '__invoke' на вашия контролер.

2. Ресурсни контролери

Докато създаваме приложение, ние изискваме извършване на CRUD (Създаване, четене, актуализиране, изтриване) операции. При контролерите на ресурси на Laravel просто трябва да създадете контролера и можете да оставите почивка на Laravel. Маршрутният ресурс на Laravel ще преотстъпи операционните маршрути на CRUD на контролера, който също само с един ред кодиране. Един файл може да бъде регистриран за всички методи във файла route.php.

Да вземем пример, да предположим, че за вашето приложение искате да направите контролер, който обработва всички входящи HTTP заявки по отношение на „изображенията“, съхранявани. Това ще стане бързо с помощта на команда Artisan. Нека разгледаме командата Artisan 'make: controller' бързо, за да създадем един подобен контролер, както следва:

php artisan make:controller ImageController --resource

Контролер ще бъде генериран в app / Http / Controllers / ImageController.php от горната команда. Този контролер ще се състои от метод, посветен на всяка налична операция с ресурси.

Сега можете да декларирате маршрут за обработка на различни действия като това:

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

Тази декларация за маршрут създава много маршрути, които могат да се справят с множество действия. Този контролер ще има специфични методи за всяко налично действие. Той ще включва и бележките, които ще ви информират за URIs и HTTP глаголите, които се обработват.

Ако искате да регистрирате повече от един контролер на ресурси с едно движение, можете да го направите с помощта на масив, както е показано по-долу:

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

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

глаголURI / ПътЕкшън събитиеИме на маршрута
POST/ изображениямагазинimages.store
GET/ изображенияиндексimages.index
GET/ снимки / създадетесъздавамimages.create
GET/ изображения / (снимка)шоуimages.show
PUT / PATCH/ изображения / (снимка)актуализацияimages.update
GET/ Изображения / (изображение) / редактиранередактиранеimages.edit
ИЗТРИЙ/ изображения / (снимка)унищожиimages.destroy

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

С помощта на тези контролери можете да се справите с всяко действие, само като дефинирате един маршрут. Първо трябва да определите маршрута, като използвате Route :: контролер така:

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

Ето, два аргумента се предават на контролера.

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

Сега просто трябва да добавите методи към „MyController“ с HTTP глагол с префикс към тях.

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

Методите „индекс“ ще отговарят на „потребители“, който е root / base URI, който се обработва от Controller.

Действие с няколко думи може да бъде достъпно чрез използване на „тире“ в URI. Вижте по-долу действието на контролера като пример:

public function getAdminProfile() ()

Това действие на контролера в MyController ще отговори на URI „потребители / администраторски профил“.

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 Architecture. Това прави развитието бързо, тъй като единият потребител може да работи по логика, докато другият работи с оглед. Поддържат се няколко изгледа за модел без дублиране, тъй като бизнес логиката е отделена от логиката на представяне.
  • Удостоверяване: Laravel има вградена система за автентификация, трябва само да се грижите за други аспекти като конфигуриране на изгледи, модели и контролери.
  • Сигурност: Сигурността е най-важният фактор, който трябва да се вземе предвид при разработването на приложение. Laravel осигурява сигурност чрез сигурността на вграденото приложение.
  • Artisan: Artisan помага при изпълнение на повтарящи се задачи, без да ги налага ръчно да се изпълняват от разработчиците. Те могат да се използват за създаване на структура на базата данни, код, миграция, така че да се направи управляема.
  • Шаблони: С иновативния и мощен шаблон на двигателя на Laravel, разработчиците могат да създават динамични уеб приложения.

Препоръчителни статии

Това е ръководство за контролерите на Laravel. Тук обсъждаме доста голям брой концепции на контролера на Laravel, които ще ви позволят да създадете свой собствен контролер за вашето приложение, който ще бъде сигурен и мощен в същото време. Можете също да разгледате следната статия, за да научите повече -

  1. Какво е Laravel Framework?
  2. Laravel Команди
  3. Какво е Laravel?
  4. Какво е Servlet?