Laravel — Контролери

330

Від автора: в терміні MVC-фреймворк «C» позначає Контролер. Він регулює потоки між Моделлю і Поданням.

Створення контролера

Щоб створити в Laravel контролери з допомогою Artisan CLI (інтерфейсу командного рядка), відкрийте командний рядок або термінал на базі операційної системи, яку ви використовуєте, і введіть наступну команду:

php artisan make:controller –plain

Замініть ім’я на ім’я контролера. Таким чином, буде створений простий конструктор, так як ми передаємо аргумент — plain. Якщо ви не хочете створювати простий конструктор, ви можете не вказувати аргумент. Створений конструктор буде розміщено в папці app/Http/Controllers. У нього вже буде додано базовий код, до якого ви можете додати власний код. Створений контролер можна викликати з файлу route.php з допомогою наступного синтаксису.

Синтаксис

Route::get(‘base URI’,’controller@method’);

Крок 1 — Виконайте наступну команду для створення контролера UserController.

php artisan make:controller UserController –plain

Крок 2 – В результаті ви отримаєте наступне.

Laravel — Контролери

Крок 3 Створений контролер, вже містить базовий код, буде розміщуватися у файлі app/Http/Controller/UserController.php залежно від ваших потреб ви можете додати в нього власний код.

Middleware контролера

Раніше ми розглядали Middleware, його також можна використовувати з контролером. Middleware може бути призначено для маршруту контролера або всередині конструктора контролера. Ви можете використовувати метод Middleware для призначення Middleware контролеру. Застосування зареєстрованого Middleware може бути обмежена конкретним методом контролера. Призначення Middleware для маршрутизації

Route::get(‘profile’, [
‘middleware’ => ‘auth’,
‘uses’ => ‘UserController@showProfile’
]);

У цьому коді ми призначаємо Middleware auth в контролері UserController для маршруту profile.

Призначення Middleware в конструкторі Контролера

middleware(‘auth’);
}
}

Тут ми призначаємо Middleware auth, використовуючи метод Middleware в конструкторі UserController.

Приклад

Крок 1 — Додайте наступний код у файл app/Http/routes.php і збережіть його. routes.php

‘First’,
‘uses’ => ‘UserController@showPath’
]);

Крок 2 — Створіть FirstMiddleware, виконавши наступний код.

php artisan make:middleware FirstMiddleware

Крок 3 — Додайте наступний код в метод обробника створеного FirstMiddleware в папці app/Http/Middleware. FirstMiddleware.php

First Middleware’;
return $next($request);
}
}

Крок 4 — Створіть SecondMiddleware, виконавши наступний код.

php artisan make:middleware SecondMiddleware

Крок 5 — Додайте наступний код в метод обробника створеного SecondMiddleware в папці app/Http/Middleware. SecondMiddleware.php

Second Middleware’;
return $next($request);
}
}

Крок 6 — Створіть контролер з ім’ям UserController, виконавши наступну команду.

php artisan make:controller UserController –plain

Крок 7 — Після успішного виконання URL-адреси ви отримаєте наступний результат:

Laravel — Контролери

Крок 8 — Скопіюйте наступний код у файл app/Http/UserController.php.

middleware(‘Second’);
}
public function showPath(Request $request){
$uri = $request->path();
echo ‘
URI: ‘.$uri;
$url = $request->url();
echo ‘
‘;
echo ‘URL: ‘.$url;
$method = $request->method();
echo ‘
‘;
echo ‘Method: ‘.$method;
}
}

Крок 9. Тепер запустіть внутрішній сервер php, виконавши наступну команду, якщо ви ще не виконали її.

php artisan serve

Крок 10 – Перейдіть за наступним URL-адресою. http://localhost:8000/usercontroller/path

Крок 11 – Ви повинні побачити на екрані наступне:

Laravel — Контролери

Керовані контролери ресурсів

Часто при створенні додатка нам необхідно виконати CRUD-операції (Create, Read, Update, Delete). Laravel дозволяє зробити це набагато простіше. Просто створіть контролер, і Laravel автоматично надасть всі методи для CRUD-операцій. Ви також можете зареєструвати один маршрут для всіх методів у файлі routes.php.

Приклад

Крок 1. Створіть контролер під ім’ям MyController, виконавши наступну команду.

php artisan make:controller MyController

Крок 2 — Додайте наступний код у файл app/Http/Controllers/MyController.php.

Крок 3 — Додайте наступний рядок коду в файл app/Http/routes.php.

Route::resource(‘my’,’MyController’);

Крок 4 — Тепер ми реєструємо всі методи MyController, реєструючи контролер з ресурсом. Нижче наведена таблиця дій, виконуваних контролером ресурсів.

Laravel — Контролери

Крок 5 — Спробуйте виконати URL-адреси, наведені у наступній таблиці.

Laravel — Контролери

Універсальні контролери

Універсальний контролер дозволяє визначати один маршрут для обробки кожної дії в контролері. Ви можете визначити його у файлі route.php за допомогою методу Route:controller, як показано в наведеному нижче коді.

Route::controller(‘base URI’,”);

Замініть на ім’я класу, який ви вказали для вашого контролера. Ім’я методу контролера має починатись з HTTP-методу, наприклад get або post. Якщо спочатку зазначено get, буде запущений get запит, а якщо спочатку зазначено post, буде оброблений post запит. Після методу HTTP ви можете вказати будь-яке ім’я для методу, але воно має йти після URI.

Крок 1 — Виконайте для створення контролера наведену нижче команду. Ми поміщаємо ім’я класу в контролер ImplicitController. Ви можете вказати для класу будь-яке ім’я за своїм вибором.

php artisan make:controller ImplicitController –plain

Крок 2 – В результаті ви отримаєте наступне:

Laravel — Контролери

Крок 3 — Скопіюйте наступний код у файл app/Http/Controllers/ImplicitController.php.

Крок 4 — Додайте такий рядок у файл app/Http/routes.php для маршрутизації запитів до зазначеного контролеру.

Route::controller(‘test’,’ImplicitController’);

Вбудовування конструктора

Контейнер служб Laravel використовується для роботи зі всіма контролерами Laravel. В результаті ви можете вводити будь-які залежності, які потрібні в конструкторі для контролера. Залежно будуть автоматично оброблені і введені в екземпляр контролера.

Крок 1 — Додайте наступний код у файл app/Http/routes.php.

class MyClass{
public $foo = ‘bar’;
}
Route::get(‘/myclass’,’ImplicitController@index’);

Крок 2 — Додайте наступний код у файл app/Http/Controllers/ImplicitController.php.

myclass = $myclass;
}
public function index(){
dd($this->myclass);
}
}

Крок 3. Перейдіть за наступним URL-адресою, щоб перевірити вбудований конструктор. http://localhost:8000/myclass

Крок 4 – Ви повинні побачити наступне:

Laravel — Контролери

Вбудовування методу

Крім вбудовування конструктора ви також можете вводити залежності для робочих методів вашого контролера.

Крок 1 — Додайте наступний код у файл app/Http/routes.php.

class MyClass{
public $foo = ‘bar’;
}
Route::get(‘/myclass’,’ImplicitController@index’);

Крок 2 — Додайте наступний код у файл app/Http/Controllers/ImplicitController.php.

Крок 3. Перейдіть за наступним URL-адресою, щоб перевірити вбудований конструктор. http://localhost:8000/myclass

В результаті ви отримаєте наступне:

Laravel — Контролери