кодесурса
«Laravel

Laravel (5.7) Контроллеры

script1adsense2code
script1adsense3code

Классы контроллеров могут использоваться при определении всей вашей логики обработки запросов. Контроллеры могут сгруппировать связанную логику обработки запросов в один класс. Контроллеры хранятся в каталоге app / Http / Controllers.

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

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

php artisan make:controller <controller-name>

Замените <имя-контроллера> на имя вашего контроллера. Созданный конструктор можно увидеть в app / Http / Controllers .

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

Синтаксис

Route::get('base URI','[email protected]');

пример

Шаг 1 - Выполните следующую команду, чтобы создать UserController.

php artisan make:controller UserController

Шаг 2 - Вы можете увидеть созданный контроллер в 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 {
   //
}

Промежуточное ПО контроллера

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

Назначение промежуточного программного обеспечения для маршрута

Route::get('profile', [
   'middleware' => 'auth',
   'uses' => '[email protected]'
]);

Здесь мы назначаем промежуточное ПО авторизации для UserController в профиле маршрута.

Назначение промежуточного программного обеспечения в конструкторе контроллера

<?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');
   }
}

Здесь мы назначаем промежуточное ПО аутентификации, используя метод промежуточного ПО в конструкторе UserController .

пример

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

routes.php

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

Шаг 2 - Создайте промежуточное программное обеспечение под названием FirstMiddleware , выполнив следующую строку кода.

php artisan make:middleware FirstMiddleware

Шаг 3 - Добавьте следующий код в метод handle недавно созданного 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 - Добавьте следующий код в метод handle недавно созданного 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

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

приложение / 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;
   }
}

Шаг 8 - Теперь запустите внутренний веб-сервер PHP, выполнив следующую команду, если вы еще не выполнили ее.

php artisan serve

Шаг 9 - Посетите следующий URL

HTTP: // локальный: 8000 / UserController / путь

Restful Resource Controllers

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

пример

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

php artisan make:controller MyController

Шаг 2 - Добавьте следующий код в

Файл app / Http / Controllers / MyController.php .

приложение / Http / Контроллеры / MyController.php

<?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 / rout.php .

приложение / Http / routes.php

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

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

ГЛАГОЛА ДОРОЖКА ДЕЙСТВИЯ НАИМЕНОВАНИЕ МАРШРУТА
.ПОЛУЧИТЬ / мой .индекс my.index
ПОЛУЧИТЬ / Мой / создать Создайте my.create
СООБЩЕНИЕ / мой .хранить my.store
.ПОЛУЧИТЬ /мой мой} .шоу my.show
.ПОЛУЧИТЬ / Мой / {мой} / редактировать .редактировать my.edit
.Put / PATCH /мой мой} .Обновить my.update
.УДАЛЯТЬ /мой мой} .удалять my.delete

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

Неявные контроллеры позволяют вам определять один маршрут для обработки каждого действия в контроллере. Вы можете определить его в файле 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

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

приложение / Http / Контроллеры / ImplicitController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ImplicitController extends Controller {
   /**
      * Responds to requests to GET /test
   */
   public function getIndex() {
      echo 'index method';
   }
   
   /**
      * Responds to requests to GET /test/show/1
   */
   public function getShow($id) {
      echo 'show method';
   }
   
   /**
      * Responds to requests to GET /test/admin-profile
   */
   public function getAdminProfile() {
      echo 'admin profile method';
   }
   
   /**
      * Responds to requests to POST /test/profile
   */
   public function postProfile() {
      echo 'profile method';
   }
}

Шаг 3 - Добавьте следующую строку в файл app / Http / rout.php, чтобы направить запросы на указанный контроллер.

приложение / Http / routes.php

Route::controller('test','ImplicitController');

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

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

пример

Шаг 1 - Добавьте следующий код в файл app / Http / rout.php .

приложение / Http / routes.php

class MyClass{
   public $foo ='bar';
}
Route::get('/myclass','[email protected]');

Шаг 2. Добавьте следующий код в файл app / Http / Controllers / ImplicitController.php .

приложение / Http / Контроллеры / 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: // локальный: 8000 / MyClass

Инъекция метода

В дополнение к внедрению в конструктор, вы также можете ввести - подсказки зависимости от методов действия вашего контроллера.

пример

Шаг 1 - Добавьте следующий код в файл app / Http / rout.php .

приложение / Http / routes.php

class MyClass{
   public $foo ='bar';
}
Route::get('/myclass','[email protected]');

приложение / Http / Контроллеры / 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: // локальный: 8000 / MyClass

Предыдущая: Laravel (5.7) CSRF Защита
Далее: Laravel (5,7) запросов

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code