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

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

От автора: в термине MVC-фреймворк «C» обозначает Контроллер. Он регулирует потоки между Моделью и Представлением.

Создание контроллера

Чтобы создать в Laravel контроллеры с помощью Artisan CLI (интерфейса командной строки), откройте командную строку или терминал на базе операционной системы, которую вы используете, и введите следующую команду:

php artisan make:controller <controller-name> --plain

Замените имя <controller-name> на имя вашего контроллера. Таким образом, будет создан простой конструктор, так как мы передаем аргумент — plain. Если вы не хотите создавать простой конструктор, вы можете не указывать аргумент. Созданный конструктор будет размещен в папке app/Http/Controllers. В него уже будет добавлен базовый код, к которому вы можете добавить собственный код. Созданный контроллер можно вызвать из файла route.php с помощью следующего синтаксиса.

Синтаксис

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

Шаг 1 — Выполните следующую команду для создания контроллера UserController.

php artisan make:controller UserController --plain

Шаг 2 – В результате вы получите следующее.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

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

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

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class UserController extends Controller {
  //
}

Middleware контроллера

Ранее мы рассматривали Middleware, его также можно использовать с контроллером. Middleware может быть назначено для маршрута контроллера или внутри конструктора контроллера. Вы можете использовать метод Middleware для назначения Middleware контроллеру. Применение зарегистрированного Middleware может быть ограничено конкретным методом контроллера. Назначение Middleware для маршрутизации

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

В этом коде мы назначаем Middleware auth в контроллере UserController для маршрута profile.

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

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class UserController extends Controller {
  public function __construct(){
 $this->middleware('auth');
  }
}

Здесь мы назначаем Middleware auth, используя метод Middleware в конструкторе UserController.

Пример

Шаг 1 — Добавьте следующий код в файл app/Http/routes.php и сохраните его. routes.php

<?php
Route::get('/usercontroller/path',[
  'middleware' => 'First',
  'uses' => 'UserController@showPath'
]);

Шаг 2 — Создайте FirstMiddleware, выполнив следующий код.

php artisan make:middleware FirstMiddleware

Шаг 3 — Добавьте следующий код в метод обработчика созданного FirstMiddleware в папке app/Http/Middleware. FirstMiddleware.php

<?php
namespace App\Http\Middleware;
use Closure;
 
class FirstMiddleware {
  public function handle($request, Closure $next) {
 echo '<br>First Middleware';
 return $next($request);
  }
}

Шаг 4 — Создайте SecondMiddleware, выполнив следующий код.

php artisan make:middleware SecondMiddleware

Шаг 5 — Добавьте следующий код в метод обработчика созданного SecondMiddleware в папке app/Http/Middleware. SecondMiddleware.php

<?php
namespace App\Http\Middleware;
use Closure;
 
class SecondMiddleware {
  public function handle($request, Closure $next){
 echo '<br>Second Middleware';
 return $next($request);
  }
}

Шаг 6 — Создайте контроллер с именем UserController, выполнив следующую команду.

php artisan make:controller UserController --plain

Шаг 7 — После успешного выполнения URL-адреса вы получите следующий результат:

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

Шаг 8 — Скопируйте следующий код в файл app/Http/UserController.php.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class UserController extends Controller {
  public function __construct(){
 $this->middleware('Second');
  }
  public function showPath(Request $request){
 $uri = $request->path();
 echo '<br>URI: '.$uri;
 
 $url = $request->url();
 echo '<br>';
 
 echo 'URL: '.$url;
 $method = $request->method();
 echo '<br>';
 
 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.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class MyController extends Controller {
  public function index(){
 echo 'index';
  }
  public function create(){
 echo 'create';
  }
  public function store(Request $request){
 echo 'store';
  }
  public function show($id){
 echo 'show';
  }
  public function edit($id){
 echo 'edit';
  }
  public function update(Request $request, $id){
 echo 'update';
  }
  public function destroy($id){
 echo 'destroy';
  }
}

Шаг 3 — Добавьте следующую строку кода в файл app/Http/routes.php.

Route::resource('my','MyController');

Шаг 4 — Теперь мы регистрируем все методы MyController, регистрируя контроллер с ресурсом. Ниже приведена таблица действий, выполняемых контроллером ресурсов.

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

Шаг 5 — Попробуйте выполнить URL-адреса, приведенные в следующей таблице.

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

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

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

Route::controller('base URI','<class-name-of-the-controller>');

Замените <class-name-of-the-controller> на имя класса, которое вы указали для вашего контроллера. Имя метода контроллера должно начинаться с 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.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class ImplicitController extends Controller {
  /**
  * ответ на GET запрос к /test  */
  public function getIndex(){
 echo 'index method';
  }
 
  /**
  * ответ на GET запрос к /test/show/1
  */
  public function getShow($id){
 echo 'show method';
  }
 
  /**
  * ответ на GET запрос к /test/admin-profile
  */
  public function getAdminProfile(){
 echo 'admin profile method';
  }
 
  /**
  * ответ на POST запрос к /test/profile
  */
  public function postProfile(){
 echo 'profile method';
  }
}

Шаг 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.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class ImplicitController extends Controller {
  private $myclass;
 
  public function __construct(\MyClass $myclass){
 $this->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.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class ImplicitController extends Controller {
  public function index(\MyClass $myclass){
 dd($myclass);
  }
} 

Шаг 3. Перейдите по следующему URL-адресу, чтобы проверить встроенный конструктор. http://localhost:8000/myclass

В результате вы получите следующее:

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

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк Laravel: теория и первая практика

Овладейте азами фреймворка Laravel!

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree