Учебники

Laravel — Краткое руководство

Laravel — Обзор

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

Laravel предлагает богатый набор функций, который включает в себя базовые функции PHP-фреймворков, таких как CodeIgniter, Yii и других языков программирования, таких как Ruby on Rails. Laravel обладает очень богатым набором функций, которые повысят скорость веб-разработки.

Если вы знакомы с Core PHP и Advanced PHP, Laravel облегчит вашу задачу. Это экономит много времени, если вы планируете разработать сайт с нуля. Кроме того, веб-сайт, созданный в Laravel, защищен и предотвращает несколько веб-атак.

Преимущества Laravel

Laravel предлагает вам следующие преимущества при разработке веб-приложения на его основе:

  • Веб-приложение становится более масштабируемым благодаря инфраструктуре Laravel.

  • При проектировании веб-приложения экономится значительное время, поскольку Laravel повторно использует компоненты из других сред при разработке веб-приложения.

  • Он включает в себя пространства имен и интерфейсы, что помогает организовывать ресурсы и управлять ими.

Веб-приложение становится более масштабируемым благодаря инфраструктуре Laravel.

При проектировании веб-приложения экономится значительное время, поскольку Laravel повторно использует компоненты из других сред при разработке веб-приложения.

Он включает в себя пространства имен и интерфейсы, что помогает организовывать ресурсы и управлять ими.

Композитор

Composer — это инструмент, который включает в себя все зависимости и библиотеки. Это позволяет пользователю создать проект с учетом упомянутой платформы (например, те, которые используются в установке Laravel). Сторонние библиотеки могут быть легко установлены с помощью композитора.

Все зависимости указаны в файле composer.json, который находится в исходной папке.

ремесленник

Интерфейс командной строки, используемый в Laravel, называется Artisan . Он включает в себя набор команд, которые помогают в создании веб-приложения. Эти команды включены в платформу Symphony, в результате чего появились дополнительные функции в Laravel 5.1 (последняя версия Laravel).

Особенности Laravel

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

модульность

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

способность быть свидетелем в суде

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

маршрутизация

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

Управление конфигурацией

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

Query Builder и ORM

Laravel включает в себя построитель запросов, который помогает в запросах к базам данных, используя различные простые цепочечные методы. Он предоставляет ORM (Object Relational Mapper) и реализацию ActiveRecord, которая называется Eloquent.

Schema Builder

Schema Builder поддерживает определения базы данных и схему в коде PHP. Он также отслеживает изменения, связанные с миграцией базы данных.

Шаблонный движок

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

Эл. почта

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

Аутентификация

Аутентификация пользователя является распространенной функцией в веб-приложениях. Laravel облегчает разработку аутентификации, поскольку включает такие функции, как регистрация, забытый пароль и отправка напоминаний о пароле .

Redis

Laravel использует Redis для подключения к существующему сеансу и кэш-памяти общего назначения. Redis взаимодействует с сессией напрямую.

Очереди

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

Событие и командная шина

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

Laravel — Установка

Для управления зависимостями Laravel использует composer . Убедитесь, что в вашей системе установлен Composer, прежде чем устанавливать Laravel. В этой главе вы увидите процесс установки Laravel.

Для установки Laravel на вашу систему вам нужно будет выполнить следующие шаги:

Шаг 1 — Посетите следующий URL и загрузите Composer, чтобы установить его в своей системе.

https://getcomposer.org/download/

Шаг 2. После установки Composer проверьте установку, введя команду Composer в командной строке, как показано на следующем снимке экрана.

Композитор

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

composer create-project laravel/laravel –-prefer-dist

Теперь сосредоточимся на установке версии 5.7. В Laravel версии 5.7 вы можете установить весь фреймворк, введя следующую команду:

composer create-project laravel/laravel test dev-develop

Вывод команды такой, как показано ниже —

Композитор Создать проект

Фреймворк Laravel может быть установлен непосредственно с веткой разработки, которая включает в себя самые последние фреймворки

Шаг 4 — Приведенная выше команда установит Laravel в текущий каталог. Запустите службу Laravel, выполнив следующую команду.

php artisan serve

Шаг 5 — После выполнения вышеуказанной команды вы увидите экран, как показано ниже —

администратор

Шаг 6 — Скопируйте URL, подчеркнутый серым на скриншоте выше, и откройте этот URL в браузере. Если вы видите следующий экран, это означает, что Laravel был успешно установлен.

Laravel Установлен

Laravel — Структура приложения

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

Снимок, показанный здесь, относится к корневой папке Laravel, а именно к laravel-project . Он включает в себя различные подпапки и файлы. Анализ папок и файлов, а также их функциональные аспекты приведены ниже —

Корневая директория

Приложение

Это папка приложения и включает весь исходный код проекта. Он содержит события, исключения и объявление промежуточного программного обеспечения. Папка приложения содержит различные подпапки, как описано ниже —

Приставка

Консоль включает в себя ремесленные команды, необходимые для Laravel. Он включает в себя каталог с именем Commands , где все команды объявлены с соответствующей подписью. Файл Kernal.php вызывает команды, объявленные в Inspire.php .

Приставка

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

События

Эта папка включает в себя все события для проекта.

События

События используются для запуска действий, выявления ошибок или необходимых проверок и обеспечения большей гибкости. Laravel хранит все события в одном каталоге. По умолчанию включен файл event.php, в котором объявлены все основные события.

Исключения

Эта папка содержит все методы, необходимые для обработки исключений. Он также содержит файл handle.php, который обрабатывает все исключения.

Http

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

Подпапка промежуточного программного обеспечения включает в себя механизм промежуточного программного обеспечения, включающий механизм фильтрации и связь между ответом и запросом.

Подпапка « Запросы » включает в себя все запросы приложения.

работы

Каталог Jobs поддерживает действия, поставленные в очередь для приложения Laravel. Базовый класс распределяется между всеми рабочими местами и обеспечивает центральное расположение для размещения их под одной крышей.

Слушатели

Слушатели зависят от события и включают методы, которые используются для обработки событий и исключений. Например, объявленное событие входа в систему включает событие LoginListener .

полисы

Политики — это классы PHP, которые включают логику авторизации. Laravel включает функцию для создания всей логики авторизации в классах политики внутри этой подпапки.

Провайдеры

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

начальная загрузка

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

конфиг

Папка config включает в себя различные конфигурации и связанные параметры, необходимые для бесперебойной работы приложения Laravel. Различные файлы, включенные в папку конфигурации, как показано на рисунке здесь. Имена файлов работают в соответствии с функциональностью, связанной с ними.

Config-папка

База данных

Как следует из названия, этот каталог включает в себя различные параметры для функций базы данных. Он включает в себя три подкаталоги, как указано ниже —

  • Семена. Содержит классы, используемые для базы данных модульного тестирования.

  • Миграции — эта папка помогает в запросах на миграцию базы данных, используемой в веб-приложении.

  • Фабрики — эта папка используется для генерации большого количества записей данных.

Семена. Содержит классы, используемые для базы данных модульного тестирования.

Миграции — эта папка помогает в запросах на миграцию базы данных, используемой в веб-приложении.

Фабрики — эта папка используется для генерации большого количества записей данных.

общественного

Это корневая папка, которая помогает в инициализации приложения Laravel. Он включает в себя следующие файлы и папки —

  • .htaccess — этот файл задает конфигурацию сервера.

  • javascript и css — эти файлы считаются активами.

  • index.php — этот файл необходим для инициализации веб-приложения.

.htaccess — этот файл задает конфигурацию сервера.

javascript и css — эти файлы считаются активами.

index.php — этот файл необходим для инициализации веб-приложения.

Ресурсы

Каталог ресурсов содержит файлы, которые расширяют возможности вашего веб-приложения. Подпапки, включенные в этот каталог, и их назначение объясняется ниже —

  • assets — папка assets содержит файлы, такие как LESS и SCSS, которые необходимы для стилизации веб-приложения.

  • lang — эта папка содержит конфигурацию для локализации или интернализации.

  • Представления — Представления — это HTML-файлы или шаблоны, которые взаимодействуют с конечными пользователями и играют основную роль в архитектуре MVC.

assets — папка assets содержит файлы, такие как LESS и SCSS, которые необходимы для стилизации веб-приложения.

lang — эта папка содержит конфигурацию для локализации или интернализации.

Представления — Представления — это HTML-файлы или шаблоны, которые взаимодействуют с конечными пользователями и играют основную роль в архитектуре MVC.

Обратите внимание, что каталог ресурсов будет плоским, а не папкой ресурсов. Иллюстрированное изображение того же самого показано ниже —

Изменения в каталоге ресурсов

Место хранения

Это папка, в которой хранятся все журналы и необходимые файлы, которые часто нужны при запуске проекта Laravel. Подпапки, включенные в этот каталог, и их назначение приведены ниже —

  • app — эта папка содержит файлы, которые вызываются последовательно.

  • Framework — содержит сессии, кеш и представления, которые часто вызываются.

  • Журналы — все исключения и журналы ошибок отслеживаются в этой подпапке.

app — эта папка содержит файлы, которые вызываются последовательно.

Framework — содержит сессии, кеш и представления, которые часто вызываются.

Журналы — все исключения и журналы ошибок отслеживаются в этой подпапке.

тесты

Все примеры модульных тестов включены в этот каталог. Соглашение об именовании для именования классов тестовых случаев — camel_case и следует соглашению в соответствии с функциональностью класса.

продавец

Laravel полностью основан на зависимостях Composer, например, для установки программы установки Laravel или для включения сторонних библиотек и т. Д. Папка Vendor включает в себя все зависимости композитора.

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

Файлы, включенные в структуру приложения, показаны ниже —

файлы

Laravel — Конфигурация

В предыдущей главе мы видели, что основные файлы конфигурации Laravel включены в каталог конфигурации . В этой главе давайте обсудим категории, включенные в конфигурацию.

Конфигурация среды

Переменные среды — это те, которые предоставляют список веб-сервисов вашему веб-приложению. Все переменные среды объявлены в файле .env, который включает параметры, необходимые для инициализации конфигурации.

По умолчанию файл .env содержит следующие параметры:

APP_ENV = local
APP_DEBUG = true
APP_KEY = base64:ZPt2wmKE/X4eEhrzJU6XX4R93rCwYG8E2f8QUA7kGK8 =
APP_URL = http://localhost
DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = homestead
DB_USERNAME = homestead
DB_PASSWORD = secret
CACHE_DRIVER = file
SESSION_DRIVER = file
QUEUE_DRIVER = sync
REDIS_HOST = 127.0.0.1
REDIS_PASSWORD = null
REDIS_PORT = 6379
MAIL_DRIVER = smtp
MAIL_HOST = mailtrap.ioMAIL_PORT = 2525
MAIL_USERNAME = null
MAIL_PASSWORD = null
MAIL_ENCRYPTION = null

Важные моменты

При работе с основными конфигурационными файлами Laravel необходимо отметить следующие моменты:

  • Файл .env не должен передаваться в систему управления исходным кодом приложения, поскольку каждый разработчик или пользователь имеет предварительно заданную конфигурацию среды для веб-приложения.

  • Для параметров резервного копирования группа разработчиков должна включить файл .env.example , который должен содержать конфигурацию по умолчанию.

Файл .env не должен передаваться в систему управления исходным кодом приложения, поскольку каждый разработчик или пользователь имеет предварительно заданную конфигурацию среды для веб-приложения.

Для параметров резервного копирования группа разработчиков должна включить файл .env.example , который должен содержать конфигурацию по умолчанию.

Извлечение переменных среды

Все переменные окружения, объявленные в файле .env, могут быть доступны через функции env-helper, которые вызовут соответствующий параметр. Эти переменные также указываются в глобальной переменной $ _ENV всякий раз, когда приложение получает запрос от пользователя. Вы можете получить доступ к переменной окружения, как показано ниже —

'env' => env('APP_ENV', 'production'),

Вспомогательные функции env вызываются в файле app.php, который находится в папке config . Приведенный выше пример вызывает базовый локальный параметр.

Доступ к значениям конфигурации

Вы можете легко получить доступ к значениям конфигурации в любом месте приложения, используя глобальную вспомогательную функцию config. Если значения конфигурации не инициализированы, возвращаются значения по умолчанию.

Например, чтобы установить часовой пояс по умолчанию, используется следующий код —

config(['app.timezone' => 'Asia/Kolkata']);

Кэширование конфигурации

Чтобы повысить производительность и повысить эффективность веб-приложения, важно кэшировать все значения конфигурации. Команда для кэширования значений конфигурации —

config:cache

Следующий снимок экрана показывает кэширование в систематическом подходе —

Кэширование конфигурации

Режим технического обслуживания

Иногда вам может потребоваться обновить некоторые параметры конфигурации или выполнить обслуживание на вашем веб-сайте. В таких случаях, поддерживая его в режиме обслуживания , вам будет легче. Такие веб-приложения, которые находятся в режиме обслуживания, выдают исключение, а именно MaintenanceModeException с кодом состояния 503.

Вы можете включить режим обслуживания в своем веб-приложении Laravel, используя следующую команду:

php artisan down

PHP Artisian Down

На следующем снимке экрана показано, как выглядит веб-приложение в нерабочем состоянии.

Запустить режим обслуживания

Как только вы закончите работу с обновлениями и другим обслуживанием, вы можете отключить режим обслуживания в вашем веб-приложении, используя следующую команду —

php artisan up

Начать обслуживание Up

Теперь вы можете обнаружить, что веб-сайт показывает результат с надлежащим функционированием и показывает, что режим обслуживания теперь удален, как показано ниже —

Laravel Установлен

Laravel — Маршрутизация

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

Маршрутизация в Laravel включает в себя следующие категории —

  • Базовая маршрутизация
  • Параметры маршрута
  • Названные маршруты

Базовая маршрутизация

Все маршруты приложений регистрируются в файле app / rout.php . Этот файл сообщает Laravel об идентификаторах URI, на которые он должен ответить, и связанный с ним контроллер даст ему конкретный вызов. Пример маршрута для страницы приветствия можно увидеть, как показано на скриншоте ниже:

Маршруты

Route::get ('/', function () {
   return view('welcome');});

пример

Посмотрите на следующий пример, чтобы понять больше о маршрутизации —

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

<?php
Route::get('/', function () {
   return view('welcome');
});

ресурсы / просмотр / welcome.blade.php

<!DOCTYPE html>
<html>
   <head>
      <title>Laravel</title>
      <link href = "https://fonts.googleapis.com/css?family=Lato:100" rel = "stylesheet" 
         type = "text/css">
      
      <style>
         html, body {
            height: 100%;
         }
         body {
            margin: 0;
            padding: 0;
            width: 100%;
            display: table;
            font-weight: 100;
            font-family: 'Lato';
         }
         .container {
            text-align: center;
            display: table-cell;
            vertical-align: middle;
         }
         .content {
            text-align: center;
            display: inline-block;
         }
         .title {
            font-size: 96px;
         }
      </style>
   </head>
   
   <body>
      <div class = "container">
         
         <div class = "content">
            <div class = "title">Laravel 5.1</div>
         </div>
			
      </div>
   </body>
</html>

Механизм маршрутизации показан на рисунке ниже —

Механизм маршрутизации

Давайте теперь разберемся в деталях, что входит в механизм маршрутизации —

Шаг 1 — Первоначально мы должны выполнить корневой URL-адрес приложения.

Шаг 2. Теперь выполненный URL-адрес должен соответствовать соответствующему методу в файле route.php . В данном случае он должен соответствовать методу и корневому (‘/’) URL. Это выполнит связанную функцию.

Шаг 3 — Функция вызывает файл шаблона resources / views / welcome.blade.php. Затем функция вызывает функцию view () с аргументом ‘welcome’ без использования blade.php .

Это приведет к выводу HTML, как показано на рисунке ниже —

Laravel5

Параметры маршрута

Иногда в веб-приложении вам может потребоваться захватить параметры, переданные с помощью URL. Для этого вам следует изменить код в файле rout.php .

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

Обязательные параметры

Это те параметры, которые должны быть обязательно записаны для маршрутизации веб-приложения. Например, важно захватить идентификационный номер пользователя из URL. Это может быть возможно путем определения параметров маршрута, как показано ниже —

Route::get('ID/{id}',function($id) {
   echo 'ID: '.$id;
});

Необязательные параметры

Иногда разработчики могут выдавать параметры как необязательные и это возможно при включении ? после имени параметра в URL. Важно сохранить значение по умолчанию, указанное в качестве имени параметра. Посмотрите на следующий пример, который показывает, как определить необязательный параметр —

Route::get('user/{name?}', function ($name = ' TutorialsPoint ') { return $name;});

В приведенном выше примере проверяется, соответствует ли значение TutorialsPoint, и, соответственно, направляется на определенный URL.

Названные маршруты

Именованные маршруты позволяют удобный способ создания маршрутов. Цепочка маршрутов может быть указана с использованием метода имени в определении маршрута. В следующем коде показан пример создания именованных маршрутов с контроллером —

Route::get('user/profile', 'UserController@showProfile')->name('profile');

Пользовательский контроллер вызовет функцию showProfile с параметром в качестве профиля . Параметры используют метод имени в определении маршрута.

Laravel — Middleware

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

Laravel включает промежуточное программное обеспечение, которое проверяет, аутентифицирован ли пользователь приложения или нет. Если пользователь аутентифицирован, он перенаправляет на домашнюю страницу, в противном случае, если он не перенаправляет на страницу входа.

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

php artisan make:middleware <middleware-name>

Замените <middleware-name> на имя вашего промежуточного программного обеспечения. Промежуточное программное обеспечение, которое вы создаете, можно увидеть в каталоге app / Http / Middleware .

пример

Обратите внимание на следующий пример, чтобы понять механизм промежуточного программного обеспечения —

Шаг 1 — Давайте теперь создадим AgeMiddleware. Чтобы создать это, нам нужно выполнить следующую команду —

php artisan make:middleware AgeMiddleware

Шаг 2 — После успешного выполнения команды вы получите следующий вывод —

AgeMiddleware

Шаг 3AgeMiddleware будет создан в приложении / Http / Middleware . Вновь созданный файл будет иметь следующий код, уже созданный для вас.

<?php

namespace App\Http\Middleware;
use Closure;

class AgeMiddleware {
   public function handle($request, Closure $next) {
      return $next($request);
   }
}

Регистрация Middleware

Мы должны зарегистрировать каждое промежуточное программное обеспечение перед его использованием. В Laravel есть два типа Middleware.

  • Global Middleware
  • Маршрутное промежуточное ПО

Глобальное промежуточное программное обеспечение будет выполняться при каждом HTTP-запросе приложения, тогда как промежуточное программное обеспечение маршрута будет назначено определенному маршруту. Промежуточное программное обеспечение может быть зарегистрировано в app / Http / Kernel.php. Этот файл содержит два свойства $ middleware и $ routeMiddleware . Свойство $ middleware используется для регистрации Global Middleware, а свойство $ routeMiddleware используется для регистрации промежуточного программного обеспечения для конкретного маршрута.

Чтобы зарегистрировать глобальное промежуточное программное обеспечение, перечислите класс в конце свойства $ middleware.

protected $middleware = [
   \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
   \App\Http\Middleware\EncryptCookies::class,
   \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
   \Illuminate\Session\Middleware\StartSession::class,
   \Illuminate\View\Middleware\ShareErrorsFromSession::class,
   \App\Http\Middleware\VerifyCsrfToken::class,
];

Чтобы зарегистрировать промежуточное ПО для конкретного маршрута, добавьте ключ и значение в свойство $ routeMiddleware.

protected $routeMiddleware = [
   'auth' => \App\Http\Middleware\Authenticate::class,
   'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
   'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];

пример

Мы создали AgeMiddleware в предыдущем примере. Теперь мы можем зарегистрировать его в свойстве промежуточного программного обеспечения для конкретного маршрута. Код для этой регистрации показан ниже.

Ниже приведен код для приложения / Http / Kernel.php

<?php

namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {
   protected $middleware = [
      \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
      \App\Http\Middleware\EncryptCookies::class,
      \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
      \Illuminate\Session\Middleware\StartSession::class,
      \Illuminate\View\Middleware\ShareErrorsFromSession::class,
      \App\Http\Middleware\VerifyCsrfToken::class,
   ];
  
   protected $routeMiddleware = [
      'auth' => \App\Http\Middleware\Authenticate::class,
      'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
      'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
      'Age' => \App\Http\Middleware\AgeMiddleware::class,
   ];
}

Параметры промежуточного программного обеспечения

Мы также можем передавать параметры с помощью Middleware. Например, если ваше приложение имеет разные роли, такие как пользователь, администратор, супер-администратор и т. Д., И вы хотите аутентифицировать действие на основе роли, это может быть достигнуто путем передачи параметров с помощью промежуточного программного обеспечения. Промежуточное программное обеспечение, которое мы создаем, содержит следующую функцию, и мы можем передать наш пользовательский аргумент после аргумента $ next .

public function handle($request, Closure $next) {
   return $next($request);
}

пример

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

php artisan make:middleware RoleMiddleware

Шаг 2 — После успешного выполнения вы получите следующий вывод —

Параметры промежуточного программного обеспечения

Шаг 3. Добавьте следующий код в метод handle недавно созданного приложения RoleMiddlewareat / Http / Middleware / RoleMiddleware.php.

<?php

namespace App\Http\Middleware;
use Closure;

class RoleMiddleware {
   public function handle($request, Closure $next, $role) {
      echo "Role: ".$role;
      return $next($request);
   }
}

Шаг 4 — Зарегистрируйте RoleMiddleware в файле app \ Http \ Kernel.php . Добавьте строку, выделенную серым цветом в этом файле, чтобы зарегистрировать RoleMiddleware.

RoleMiddleware

Шаг 5 — Выполните следующую команду для создания TestController

php artisan make:controller TestController --plain

Шаг 6 — После успешного выполнения вышеуказанного шага вы получите следующий вывод —

TestController

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller {
   public function index() {
      echo "<br>Test Controller.";
   }
}

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

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

Route::get('role',[
   'middleware' => 'Role:editor',
   'uses' => 'TestController@index',
]);

Шаг 9 — Посетите следующий URL, чтобы протестировать промежуточное программное обеспечение с параметрами

http://localhost:8000/role

Шаг 10 — Вывод будет выглядеть, как показано на следующем рисунке.

Ролевый редактор

Завершаемое промежуточное ПО

Прерываемое промежуточное ПО выполняет некоторую задачу после отправки ответа в браузер. Это может быть достигнуто путем создания промежуточного программного обеспечения с методом завершения в промежуточном программном обеспечении. Прерываемое промежуточное программное обеспечение должно быть зарегистрировано в глобальном промежуточном программном обеспечении. Метод terminate получит два аргумента $ request и $ response. Метод Terminate может быть создан, как показано в следующем коде.

пример

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

php artisan make:middleware TerminateMiddleware

Шаг 2 — Приведенный выше шаг даст следующий результат —

Завершаемое промежуточное ПО

Шаг 3. Скопируйте следующий код в только что созданный TerminateMiddleware в app / Http / Middleware / TerminateMiddleware.php.

<?php

namespace App\Http\Middleware;
use Closure;

class TerminateMiddleware {
   public function handle($request, Closure $next) {
      echo "Executing statements of handle method of TerminateMiddleware.";
      return $next($request);
   }
   
   public function terminate($request, $response) {
      echo "<br>Executing statements of terminate method of TerminateMiddleware.";
   }
}

Шаг 4 — Зарегистрируйте TerminateMiddleware в файле app \ Http \ Kernel.php . Добавьте строку, выделенную серым цветом в этом файле, чтобы зарегистрировать TerminateMiddleware.

TerminateMiddleware

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

php artisan make:controller ABCController --plain

Шаг 6 — После успешного выполнения URL вы получите следующий вывод —

ABCController

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ABCController extends Controller {
   public function index() {
      echo "<br>ABC Controller.";
   }
}

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

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

Route::get('terminate',[
   'middleware' => 'terminate',
   'uses' => 'ABCController@index',
]);

Шаг 9 — Посетите следующий URL, чтобы проверить Terminable Middleware.

http://localhost:8000/terminate

Шаг 10 — Вывод будет выглядеть, как показано на следующем рисунке.

ABC Controller

Laravel — Пространства имен

Пространства имен могут быть определены как класс элементов, в котором каждый элемент имеет уникальное имя для этого связанного класса. Может использоваться совместно с элементами других классов.

Объявление пространства имен

Ключевое слово use позволяет разработчикам сократить пространство имен.

use <namespace-name>;

Пространством имен по умолчанию, используемым в Laravel, является App, однако пользователь может изменить пространство имен в соответствии с веб-приложением. Создание пользовательского пространства имен с помощью команды ремесленника упоминается следующим образом:

php artisan app:name SocialNet

Выберите Git

Созданное пространство имен может включать в себя различные функции, которые могут использоваться в контроллерах и различных классах.

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

В рамках MVC буква «C» обозначает контроллер. Он действует как трафик между представлениями и моделями. В этой главе вы узнаете о контроллерах в Laravel.

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

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

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

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

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

Синтаксис

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

пример

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

php artisan make:controller UserController --plain

Шаг 2 — После успешного выполнения вы получите следующий вывод.

UserController

Шаг 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 {
   //
}

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

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

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

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

Здесь мы назначаем промежуточное ПО авторизации для 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' => 'UserController@showPath'
]);

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

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

UserController1

Шаг 8 — Скопируйте следующий код в файл 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;
   }
}

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

php artisan serve

Шаг 10 — Посетите следующий URL.

http://localhost:8000/usercontroller/path

Шаг 11 — Вывод будет выглядеть, как показано на следующем рисунке.

UserController2

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.destroy

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

URL Описание Выходное изображение
HTTP: // локальный: 8000 / мой Выполняет индексный метод MyController.php индекс
HTTP: // локальный: 8000 / мой / создать Выполняет метод создания MyController.php Создайте
HTTP: // локальный: 8000 / меня / 1 Выполняет метод показа MyController.php шоу
HTTP: // локальный: 8000 / мой / 1 / редактировать Выполняет метод редактирования MyController.php редактировать

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

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

Implicitcontroller

Шаг 3 — Скопируйте следующий код в

Файл 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';
   }
}

Шаг 4 — Добавьте следующую строку в файл 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','ImplicitController@index');

Шаг 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://localhost:8000/myclass

Шаг 4 — Вывод будет выглядеть, как показано на следующем рисунке.

Мои занятия

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

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

пример

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

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

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

Шаг 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 {
   public function index(\MyClass $myclass) {
      dd($myclass);
   }
} 

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

http://localhost:8000/myclass

Это даст следующий результат —

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

Laravel — Запрос

В этой главе вы подробно узнаете о запросах в Laravel.

Получение URI запроса

Метод «путь» используется для получения запрошенного URI. Метод is используется для получения запрошенного URI, который соответствует конкретному шаблону, указанному в аргументе метода. Чтобы получить полный URL, мы можем использовать метод url .

пример

Шаг 1 — Выполните приведенную ниже команду, чтобы создать новый контроллер с именем UriController .

php artisan make:controller UriController –plain

Шаг 2. После успешного выполнения URL вы получите следующий вывод:

UriController

Шаг 3 — После создания контроллера добавьте следующий код в этот файл.

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UriController extends Controller {
   
   public function index(Request $request) {
      // Usage of path method
      $path = $request->path();
      echo 'Path Method: '.$path;
      echo '<br>';
     
      // Usage of is method
      $pattern = $request->is('foo/*');
      echo 'is Method: '.$pattern;
      echo '<br>';
      
      // Usage of url method
      $url = $request->url();
      echo 'URL method: '.$url;
   }
}

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

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

Route::get('/foo/bar','UriController@index');

Шаг 5 — Посетите следующий URL.

http://localhost:8000/foo/bar

Шаг 6 — Вывод будет выглядеть, как показано на следующем рисунке.

Путь Метод

Получение ввода

Входные значения могут быть легко получены в Laravel. Независимо от того, какой метод был использован «get» или «post» , метод Laravel будет извлекать входные значения для обоих методов одинаково. Есть два способа получить входные значения.

  • Использование метода input ()
  • Использование свойств экземпляра Request

Использование метода input ()

Метод input () принимает один аргумент — имя поля в форме. Например, если форма содержит поле имени пользователя, мы можем получить к нему доступ следующим образом.

$name = $request->input('username');

Использование свойств экземпляра Request

Как и метод input () , мы можем получить свойство username непосредственно из экземпляра запроса.

$request->username

пример

Обратите внимание на следующий пример, чтобы лучше понять запросы.

Шаг 1 — Создайте форму регистрации, где пользователь может зарегистрироваться и сохранить форму в ресурсах / views / register.php

<html>

   <head>
      <title>Form Example</title>
   </head>

   <body>
      <form action = "/user/register" method = "post">
         <input type = "hidden" name = "_token" value = "<?php echo csrf_token() ?>">
      
         <table>
            <tr>
               <td>Name</td>
               <td><input type = "text" name = "name" /></td>
            </tr>
            <tr>
               <td>Username</td>
               <td><input type = "text" name = "username" /></td>
            </tr>
            <tr>
               <td>Password</td>
               <td><input type = "text" name = "password" /></td>
            </tr>
            <tr>
               <td colspan = "2" align = "center">
                  <input type = "submit" value = "Register" />
               </td>
            </tr>
         </table>
      
      </form>
   </body>
</html>

Шаг 2 — Выполните приведенную ниже команду, чтобы создать контроллер UserRegistration .

php artisan make:controller UserRegistration --plain

Шаг 3 — После успешного выполнения вышеуказанного шага вы получите следующий вывод —

Регистрация пользователя

Шаг 4 — Скопируйте следующий код в

app / Http / Controllers / UserRegistration.php контроллер.

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserRegistration extends Controller {
   public function postRegister(Request $request) {
      //Retrieve the name input field
      $name = $request->input('name');
      echo 'Name: '.$name;
      echo '<br>';
      
      //Retrieve the username input field
      $username = $request->username;
      echo 'Username: '.$username;
      echo '<br>';
      
      //Retrieve the password input field
      $password = $request->password;
      echo 'Password: '.$password;
   }
}

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

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

Route::get('/register',function() {
   return view('register');
});
Route::post('/user/register',array('uses'=>'UserRegistration@postRegister'));

Шаг 6 — Посетите следующий URL, и вы увидите форму регистрации, как показано на рисунке ниже. Введите регистрационные данные и нажмите «Регистрация», и вы увидите на второй странице, которую мы получили, и отобразили регистрационные данные пользователя.

http://localhost:8000/register

Шаг 7 — Вывод будет выглядеть примерно так, как показано ниже на следующих изображениях.

Постановка на учет

Laravel — Cookie

Файлы cookie играют важную роль при создании сеанса пользователя в веб-приложении. В этой главе вы узнаете о работе с файлами cookie в веб-приложениях на основе Laravel.

Создание Cookie

Cookie может быть создан глобальным помощником cookie Laravel. Это экземпляр Symfony \ Component \ HttpFoundation \ Cookie . Куки можно прикрепить к ответу с помощью метода withCookie (). Создайте экземпляр ответа класса Illuminate \ Http \ Response для вызова метода withCookie (). Cookie, сгенерированные Laravel, зашифрованы и подписаны и не могут быть изменены или прочитаны клиентом.

Вот пример кода с объяснением.

//Create a response instance
$response = new Illuminate\Http\Response('Hello World');

//Call the withCookie() method with the response method
$response->withCookie(cookie('name', 'value', $minutes));

//return the response
return $response;

Метод Cookie () будет принимать 3 аргумента. Первый аргумент — это имя куки, второй аргумент — это значение куки, а третий аргумент — это длительность куки, после которой куки будут автоматически удалены.

Cookie можно установить навсегда, используя метод forever, как показано в приведенном ниже коде.

$response->withCookie(cookie()->forever('name', 'value'));

Получение Cookie

После того, как мы установили cookie, мы можем извлечь cookie методом cookie (). Этот метод cookie () будет принимать только один аргумент, который будет именем куки. Метод cookie может быть вызван с использованием экземпляра Illuminate \ Http \ Request .

Вот пример кода.

//’name’ is the name of the cookie to retrieve the value of
$value = $request->cookie('name');

пример

Посмотрите на следующий пример, чтобы понять больше о Cookies —

Шаг 1 — Выполните приведенную ниже команду, чтобы создать контроллер, в котором мы будем манипулировать cookie.

php artisan make:controller CookieController --plain

Шаг 2 — После успешного выполнения вы получите следующий вывод —

CookieController

Шаг 3 — Скопируйте следующий код в

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class CookieController extends Controller {
   public function setCookie(Request $request) {
      $minutes = 1;
      $response = new Response('Hello World');
      $response->withCookie(cookie('name', 'virat', $minutes));
      return $response;
   }
   public function getCookie(Request $request) {
      $value = $request->cookie('name');
      echo $value;
   }
}

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

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

Route::get('/cookie/set','CookieController@setCookie');
Route::get('/cookie/get','CookieController@getCookie');

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

http://localhost:8000/cookie/set

Шаг 6 — Вывод будет выглядеть, как показано ниже. Окно, отображаемое на скриншоте, взято из firefox, но в зависимости от вашего браузера cookie также можно проверить с помощью параметра cookie.

Привет, мир

Шаг 7. Перейдите по следующему URL-адресу, чтобы получить файл cookie с указанного выше URL-адреса.

http://localhost:8000/cookie/get

Шаг 8 — Вывод будет выглядеть, как показано на следующем рисунке.

Virat

Laravel — Ответ

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

Основной ответ

Laravel предоставляет несколько разных способов возврата ответа. Ответ может быть отправлен либо с маршрута, либо с контроллера. Основной ответ, который можно отправить, — простая строка, как показано в приведенном ниже примере кода. Эта строка будет автоматически преобразована в соответствующий HTTP-ответ.

пример

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

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

Route::get('/basic_response', function () {
   return 'Hello World';
});

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

http://localhost:8000/basic_response

Шаг 3 — Вывод будет выглядеть, как показано на следующем рисунке.

Основной ответ

Присоединение заголовков

Ответ может быть прикреплен к заголовкам с помощью метода header (). Мы также можем прикрепить серию заголовков, как показано в приведенном ниже примере кода.

return response($content,$status)
   ->header('Content-Type', $type)
   ->header('X-Header-One', 'Header Value')
   ->header('X-Header-Two', 'Header Value');

пример

Обратите внимание на следующий пример, чтобы понять больше о Response —

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

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

Route::get('/header',function() {
   return response("Hello", 200)->header('Content-Type', 'text/html');
});

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

http://localhost:8000/header

Шаг 3 — Вывод будет выглядеть, как показано на следующем рисунке.

Привет

Прикрепление куки

Вспомогательный метод withcookie () используется для прикрепления файлов cookie. Куки, сгенерированные с помощью этого метода, могут быть прикреплены путем вызова метода withcookie () с экземпляром ответа. По умолчанию все файлы cookie, сгенерированные Laravel, зашифрованы и подписаны, поэтому они не могут быть изменены или прочитаны клиентом.

пример

Обратите внимание на следующий пример, чтобы понять больше о прикреплении файлов cookie.

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

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

Route::get('/cookie',function() {
   return response("Hello", 200)->header('Content-Type', 'text/html')
      ->withcookie('name','Virat Gandhi');
});

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

http://localhost:8000/cookie

Шаг 3 — Вывод будет выглядеть, как показано на следующем рисунке.

Привет

JSON Response

Ответ JSON можно отправить с помощью метода json. Этот метод автоматически устанавливает заголовок Content-Type на application / json . Метод json автоматически преобразует массив в соответствующий ответ json .

пример

Обратите внимание на следующий пример, чтобы понять больше о JSON Response —

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

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

Route::get('json',function() {
   return response()->json(['name' => 'Virat Gandhi', 'state' => 'Gujarat']);
});

Шаг 2 — Посетите следующий URL, чтобы проверить ответ json.

http://localhost:8000/json

Шаг 3 — Вывод будет выглядеть, как показано на следующем рисунке.

Json Response

Laravel — Просмотров

В рамках MVC буква «V» обозначает « Виды» . Он разделяет логику приложения и логику представления. Представления хранятся в каталоге ресурсов / представлений . Как правило, представление содержит HTML-код, который будет обслуживаться приложением.

пример

Обратите внимание на следующий пример, чтобы понять больше о представлениях —

Шаг 1. Скопируйте следующий код и сохраните его в resources / views / test.php

<html>
   <body>
      <h1>Hello, World</h1>
   </body>
</html>

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

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

Route::get('/test', function() {
   return view('test');
});

Шаг 3 — Посетите следующий URL, чтобы увидеть выходные данные представления.

http://localhost:8000/test

Шаг 4 — Вывод будет выглядеть, как показано на следующем рисунке.

Понимание взглядов

Передача данных в представления

При создании приложения может потребоваться передать данные в представления. Передайте массив для просмотра вспомогательной функции. После передачи массива мы можем использовать ключ, чтобы получить значение этого ключа в файле HTML.

пример

Обратите внимание на следующий пример, чтобы больше узнать о передаче данных в представления.

Шаг 1. Скопируйте следующий код и сохраните его в resources / views / test.php

<html>
   <body>
      <h1><?php echo $name; ?></h1>
   </body>
</html>

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

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

Route::get('/test', function() {
   return view('test',[‘name’=>’Virat Gandhi’]);
});

Шаг 3 — Значение имени ключа будет передано в файл test.php, и $ name будет заменено этим значением.

Шаг 4 — Посетите следующий URL, чтобы увидеть выходные данные представления.

http://localhost:8000/test

Шаг 5 — Вывод будет выглядеть, как показано на следующем рисунке.

Вират Ганди

Совместное использование данных со всеми представлениями

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

пример

Обратите внимание на следующий пример, чтобы больше узнать об обмене данными со всеми представлениями.

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

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

Route::get('/test', function() {
   return view('test');
});

Route::get('/test2', function() {
   return view('test2');
});

Шаг 2 — Создайте два файла вида — test.php и test2.php с одинаковым кодом. Это два файла, которые будут обмениваться данными. Скопируйте следующий код в оба файла. resources / views / test.php & resources / views / test2.php

<html>
   <body>
      <h1><?php echo $name; ?></h1>
   </body>
</html>

Шаг 3 — Измените код метода загрузки в файле app / Providers / AppServiceProvider.php, как показано ниже. (Здесь мы использовали метод share, и данные, которые мы передали, будут доступны всем представлениям.) App / Providers / AppServiceProvider.php

<?php

namespace App\Providers;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {
   
   /**
      * Bootstrap any application services.
      *
      * @return void
   */

   public function boot() {
      view()->share('name', 'Virat Gandhi');
   }

   /**
      * Register any application services.
      *
      * @return void
   */

   public function register() {
      //
   }
}

Шаг 4Посетите следующие URL.

http://localhost:8000/test
http://localhost:8000/test2

Шаг 5 — Вывод будет выглядеть, как показано на следующем рисунке.

Вират Ганди

Laravel — Шаблоны Лезвий

Laravel 5.1 представляет концепцию использования Blade , движка шаблонов для разработки уникального макета. Компоновка, разработанная таким образом, может использоваться другими видами и включает в себя согласованный дизайн и структуру.

По сравнению с другими шаблонными движками Blade уникален в следующих отношениях:

  • Это не ограничивает разработчика от использования простого PHP-кода в представлениях.

  • Представленные таким образом виды лезвий компилируются и кэшируются до тех пор, пока не будут изменены.

Это не ограничивает разработчика от использования простого PHP-кода в представлениях.

Представленные таким образом виды лезвий компилируются и кэшируются до тех пор, пока не будут изменены.

Добро пожаловать Клинок

Полная структура каталогов Laravel показана на скриншоте, приведенном здесь.

Вы можете заметить, что все представления хранятся в каталоге resources / views и представление по умолчанию для платформы Laravel — welcome.blade.php .

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

Шаги для создания макета шаблона лезвия

Вам нужно будет выполнить следующие шаги, чтобы создать макет шаблона лезвия —

Шаг 1

  • Создайте папку макета внутри папки resources / views . Мы собираемся использовать эту папку, чтобы хранить все макеты вместе.

  • Создайте имя файла master.blade.php, с которым будет связан следующий код:

Создайте папку макета внутри папки resources / views . Мы собираемся использовать эту папку, чтобы хранить все макеты вместе.

Создайте имя файла master.blade.php, с которым будет связан следующий код:

<html>
   <head>
      <title>DemoLaravel - @yield('title')</title>
   </head>
   <body>
      @yield('content')
   </body>
</html>

Шаг 2

На этом этапе вы должны расширить макет. Расширение макета включает в себя определение дочерних элементов. Laravel использует директиву Blade @extends для определения дочерних элементов.

При расширении макета обратите внимание на следующие моменты:

  • Представления, определенные в макете Blade, внедряют контейнер уникальным способом.

  • Различные разделы представления создаются как дочерние элементы.

  • Дочерние элементы хранятся в папке раскладок как child.blade.php

Представления, определенные в макете Blade, внедряют контейнер уникальным способом.

Различные разделы представления создаются как дочерние элементы.

Дочерние элементы хранятся в папке раскладок как child.blade.php

Пример, демонстрирующий расширение макета, созданного выше, показан здесь —

@extends('layouts.app')
@section('title', 'Page Title')
@section('sidebar')
   @parent
<p>This refers to the master sidebar.</p>
@endsection
@section('content')
<p>This is my body content.</p>
@endsection

Шаг 3

Чтобы реализовать дочерние элементы в представлениях, вы должны определить макет так, как он нужен.

Целевая страница

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

Laravel — Перенаправления

Именованный маршрут используется, чтобы дать конкретное имя маршруту. Имя может быть назначено с помощью ключа массива «as» .

Route::get('user/profile', ['as' => 'profile', function () {
   //
}]);

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

Перенаправление на именованные маршруты

пример

Обратите внимание на следующий пример, чтобы понять больше о перенаправлении на именованные маршруты.

Шаг 1 — Создайте представление с именем test.php и сохраните его в

resources / views / test.php .

<html>
   <body>
      <h1>Example of Redirecting to Named Routes</h1>
   </body>
</html>

Шаг 2 — В файле rout.php мы настроили маршрут для файла test.php . Мы переименовали его в тестирование . Мы также настроили еще одно перенаправление маршрута, которое перенаправит запрос на тестирование именованного маршрута.

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

Route::get('/test', ['as'=>'testing',function() {
   return view('test2');
}]);

Route::get('redirect',function() {
   return redirect()->route('testing');
});

Шаг 3 — Посетите следующий URL, чтобы проверить пример именованного маршрута.

http://localhost:8000/redirect

Шаг 4 — После выполнения вышеуказанного URL вы будете перенаправлены на http: // localhost: 8000 / test, так как мы перенаправляем на именованный маршрут тестирования .

Шаг 5. После успешного выполнения URL вы получите следующий вывод:

Вират Ганди

Перенаправление на действия контроллера

Не только именованный маршрут, но мы также можем перенаправить на действия контроллера. Нам нужно просто передать контроллер и имя действия методу действия, как показано в следующем примере. Если вы хотите передать параметр, вы можете передать его как второй аргумент метода действия.

return redirect()->action(‘NameOfController@methodName’,[parameters]);

пример

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

php artisan make:controller RedirectController --plain

Шаг 2 — После успешного выполнения вы получите следующий вывод —

Контроллер перенаправления

Шаг 3 — Скопируйте следующий код в файл

app / Http / Controllers / RedirectController.php .

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class RedirectController extends Controller {
   public function index() {
      echo "Redirecting to controller's action.";
   }
}

Шаг 4 — Добавьте следующие строки в app / Http / rout.php .

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

Route::get('rr','RedirectController@index');
Route::get('/redirectcontroller',function() {
   return redirect()->action('RedirectController@index');
});

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

http://localhost:8000/redirectcontroller

Шаг 6 — Вывод будет выглядеть, как показано на следующем рисунке.

RedirectController.jpg

Laravel — Работа с базой данных

Laravel сделал обработку с базой данных очень простой. Laravel в настоящее время поддерживает следующие 4 базы данных —

  • MySQL
  • Postgres
  • SQLite
  • SQL Server

Запрос к базе данных может быть запущен с использованием необработанного SQL, свободного построителя запросов и Eloquent ORM. Чтобы понять все операции CRUD (создание, чтение, обновление, удаление) с Laravel, мы будем использовать простую систему управления студентами.

Подключение к базе данных

Сконфигурируйте базу данных в файле config / database.php и создайте базу данных колледжа со структурой в MySQL, как показано в следующей таблице.

База данных: Колледж

Стол: студент

Название столбца Тип столбца дополнительный
Я бы INT (11) Первичный ключ | Автоматическое приращение
название VARCHAR (25)

Мы увидим, как добавлять, удалять, обновлять и извлекать записи из базы данных, используя Laravel в таблице учеников.

Sr.No. Запись и описание
1 Вставить записи

Мы можем вставить запись, используя фасад БД с методом вставки.

2 Получить записи

После настройки базы данных мы можем получить записи, используя фасад БД с методом select.

3 Обновить записи

Мы можем обновить записи, используя фасад БД с методом обновления.

4 Удалить записи

Мы можем удалить запись, используя фасад БД с помощью метода delete.

Мы можем вставить запись, используя фасад БД с методом вставки.

После настройки базы данных мы можем получить записи, используя фасад БД с методом select.

Мы можем обновить записи, используя фасад БД с методом обновления.

Мы можем удалить запись, используя фасад БД с помощью метода delete.

Laravel — Ошибки и регистрация

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

ошибки

Проект в процессе реализации несет несколько ошибок. Обработка ошибок и исключений уже настроена для вас при запуске нового проекта Laravel. Обычно в локальной среде мы должны видеть ошибки для целей отладки. Нам нужно скрывать эти ошибки от пользователей в производственной среде. Это может быть достигнуто с помощью переменной APP_DEBUG, установленной в файле среды .env, хранящемся в корне приложения.

Для локальной среды значение APP_DEBUG должно быть истинным, но для производства его нужно установить в ложное, чтобы скрыть ошибки.

Примечание. После изменения переменной APP_DEBUG необходимо перезапустить сервер Laravel.

логирование

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

'log' => 'daily'

Вы можете увидеть сгенерированные записи журнала в файле storage / logs / laravel.log .

Laravel — Формы

Laravel предоставляет различные встроенные теги для простой и безопасной обработки HTML-форм. Все основные элементы HTML генерируются с использованием Laravel. Для поддержки этого нам нужно добавить пакет HTML в Laravel, используя composer.

Пример 1

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

composer require illuminate/html

Шаг 2 — Это добавит пакет HTML в Laravel, как показано на следующем рисунке.

Пакет HTML

Шаг 3 — Теперь нам нужно добавить указанный выше пакет в файл конфигурации Laravel, который хранится в config / app.php. Откройте этот файл, и вы увидите список поставщиков услуг Laravel, как показано на следующем рисунке. Добавьте поставщика услуг HTML, как указано в рамке, приведенной на следующем рисунке.

Ларавел Сервис

Шаг 4 — Добавьте псевдонимы в один файл для HTML и Form. Обратите внимание на две строки, указанные в обведенном поле на следующем изображении, и добавьте эти две строки.

Контурная коробка

Шаг 5 — Теперь все настроено. Давайте посмотрим, как мы можем использовать различные элементы HTML, используя теги Laravel.

Открытие формы

{{ Form::open(array('url' => 'foo/bar')) }}
   //
{{ Form::close() }}

Генерация элемента метки

echo Form::label('email', 'E-Mail Address');

Генерация ввода текста

echo Form::text('username');

Указание значения по умолчанию

echo Form::text('email', 'example@gmail.com');

Генерация ввода пароля

echo Form::password('password');

Генерация файлового ввода

echo Form::file('image');

Генерация флажка или радиовхода

echo Form::checkbox('name', 'value');
echo Form::radio('name', 'value');

Генерация флажка или радиовхода, который проверяется

echo Form::checkbox('name', 'value', true);
echo Form::radio('name', 'value', true);

Генерация выпадающего списка

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));

Создание кнопки отправки

echo Form::submit('Click Me!');

Пример 2

Шаг 1 — Скопируйте следующий код, чтобы создать представление под названием

resources / views / form.php .

ресурсы / виды / form.php

<html>
   <body>
      
      <?php
         echo Form::open(array('url' => 'foo/bar'));
            echo Form::text('username','Username');
            echo '<br/>';
            
            echo Form::text('email', 'example@gmail.com');
            echo '<br/>';
     
            echo Form::password('password');
            echo '<br/>';
            
            echo Form::checkbox('name', 'value');
            echo '<br/>';
            
            echo Form::radio('name', 'value');
            echo '<br/>';
            
            echo Form::file('image');
            echo '<br/>';
            
            echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));
            echo '<br/>';
            
            echo Form::submit('Click Me!');
         echo Form::close();
      ?>
   
   </body>
</html>

Шаг 2 — Добавьте следующую строку в app / Http / rout.php, чтобы добавить маршрут для просмотра form.php

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

Route::get('/form',function() {
   return view('form');
});

Шаг 3 — Посетите следующий URL, чтобы увидеть форму.

http://localhost:8000/form

Шаг 4 — Вывод будет выглядеть, как показано на следующем рисунке.

Посмотреть форму

Laravel — Локализация

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

<?php
return [
   'welcome' => 'Welcome to the application'
];

пример

Шаг 1 — Создайте 3 файла для языков — английский, французский и немецкий . Сохраните файл на английском языке в ресурсах / lang / en / lang.php

<?php
   return [
      'msg' => 'Laravel Internationalization example.'
   ];
?>

Шаг 2 — Сохраните французский файл в ресурсах / lang / fr / lang.php .

<?php
   return [
      'msg' => 'Exemple Laravel internationalisation.'
   ];
?>

Шаг 3 — Сохраните немецкий файл в ресурсах / lang / de / lang.php .

<?php
   return [
      'msg' => 'Laravel Internationalisierung Beispiel.' 
   ];
?>

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

php artisan make:controller LocalizationController --plain

Шаг 5 — После успешного выполнения вы получите следующий вывод —

LocalizationController

Шаг 6 — Скопируйте следующий код в файл

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class LocalizationController extends Controller {
   public function index(Request $request,$locale) {
      //set’s application’s locale
      app()->setLocale($locale);
      
      //Gets the translated message and displays it
      echo trans('lang.msg');
   }
}

Шаг 7 — Добавьте маршрут для LocalizationController в файле app / Http / rout.php . Обратите внимание, что мы передаем аргумент {locale} после локализации /, который мы будем использовать, чтобы увидеть вывод на другом языке.

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

Route::get('localization/{locale}','LocalizationController@index');

Шаг 8 — Теперь давайте посетим разные URL, чтобы увидеть все разные языки. Выполните приведенный ниже URL, чтобы увидеть вывод на английском языке.

http://localhost:8000/localization/en

Шаг 9 — Вывод будет выглядеть, как показано на следующем рисунке.

Интернационализация Ларавела

Шаг 10 — Выполните приведенный ниже URL, чтобы увидеть вывод на французском языке.

http://localhost:8000/localization/fr

Шаг 11 — Вывод будет выглядеть, как показано на следующем рисунке.

Французский пример

Шаг 12 — Выполните приведенный ниже URL, чтобы увидеть вывод на немецком языке

http://localhost:8000/localization/de

Шаг 13 — Вывод будет выглядеть, как показано на следующем рисунке.

Немецкий пример

Laravel — Сессия

Сеансы используются для хранения информации о пользователе по всем запросам. Laravel предоставляет различные драйверы, такие как файл, cookie, apc, массив, Memcached, Redis и база данных для обработки данных сеанса. По умолчанию используется драйвер файла, потому что он легкий. Сессия может быть настроена в файле, хранящемся в config / session.php .

Доступ к данным сеанса

Чтобы получить доступ к данным сеанса, нам нужен экземпляр сеанса, к которому можно получить доступ через HTTP-запрос. После получения экземпляра мы можем использовать метод get () , который получит один аргумент «ключ» для получения данных сеанса.

$value = $request->session()->get('key');

Вы можете использовать метод all () для получения всех данных сеанса вместо метода get () .

Хранение данных сеанса

Данные могут храниться в сеансе с использованием метода put () . Метод put () будет принимать два аргумента: «ключ» и «значение» .

$request->session()->put('key', 'value');

Удаление данных сеанса

Метод Forgot () используется для удаления элемента из сеанса. Этот метод примет «ключ» в качестве аргумента.

$request->session()->forget('key');

Используйте метод flush () вместо метода Forgot (), чтобы удалить все данные сеанса. Используйте метод pull () для извлечения данных из сеанса и последующего удаления. Метод pull () также будет принимать ключ в качестве аргумента. Разница между методом Forgot () и методом pull () заключается в том, что метод Forgot () не возвращает значение сеанса, а метод pull () возвращает его и удаляет это значение из сеанса.

пример

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

php artisan make:controller SessionController --plain

Шаг 2 — После успешного выполнения вы получите следующий вывод —

SessionController

Шаг 3 — Скопируйте следующий код в файл по адресу

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class SessionController extends Controller {
   public function accessSessionData(Request $request) {
      if($request->session()->has('my_name'))
         echo $request->session()->get('my_name');
      else
         echo 'No data in the session';
   }
   public function storeSessionData(Request $request) {
      $request->session()->put('my_name','Virat Gandhi');
      echo "Data has been added to session";
   }
   public function deleteSessionData(Request $request) {
      $request->session()->forget('my_name');
      echo "Data has been removed from session.";
   }
}

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

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

Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');

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

http://localhost:8000/session/set

Шаг 6 — Вывод будет выглядеть, как показано на следующем рисунке.

Данные в сеансе

Шаг 7 — Посетите следующий URL, чтобы получить данные из сеанса .

http://localhost:8000/session/get

Шаг 8 — Вывод будет выглядеть, как показано на следующем рисунке.

Вират Ганди

Шаг 9 — Посетите следующий URL, чтобы удалить данные сеанса .

http://localhost:8000/session/remove

Шаг 10 — Вы увидите сообщение, как показано на следующем рисунке.

сессия

Laravel — валидация

Валидация является наиболее важным аспектом при разработке приложения. Он проверяет поступающие данные. По умолчанию базовый класс контроллера использует черту ValidatesRequests, которая предоставляет удобный метод для проверки входящих HTTP-запросов с помощью множества мощных правил проверки.

Доступные правила проверки в Laravel

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

Доступные правила проверки в Laravel
Принято Активный URL После (Дата)
Альфа Альфа Дэш Альфа Числовой
массив До (Дата) Между
логический подтвердил Дата
Формат даты Разные Digits
Цифры между Эл. почта Существует (база данных)
Файл изображения) В целое число
Айпи адрес JSON Максимум
MIME Типы (Файл) Min Не в
числовой Регулярное выражение необходимые
Требуется, если Требуется, если только Требуется с
Требуется со всеми Требуется без Требуется без всего
Так же Размер строка
Часовой пояс Уникальный (База данных) URL

Переменная $ errors будет экземпляром Illuminate \ Support \ MessageBag . Сообщение об ошибке может быть отображено в файле представления, добавив код, как показано ниже.

@if (count($errors) > 0)
   <div class = "alert alert-danger">
      <ul>
         @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
         @endforeach
      </ul>
   </div>
@endif

пример

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

php artisan make:controller ValidationController --plain

Шаг 2 — После успешного выполнения вы получите следующий вывод —

ValidationController

Шаг 3 — Скопируйте следующий код в

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ValidationController extends Controller {
   public function showform() {
      return view('login');
   }
   public function validateform(Request $request) {
      print_r($request->all());
      $this->validate($request,[
         'username'=>'required|max:8',
         'password'=>'required'
      ]);
   }
}

Шаг 4 — Создайте файл представления с именем resources / views / login.blade.php и скопируйте следующий код в этот файл.

ресурсы / виды / login.blade.php

<html>
   
   <head>
      <title>Login Form</title>
   </head>

   <body>
      
      @if (count($errors) > 0)
         <div class = "alert alert-danger">
            <ul>
               @foreach ($errors->all() as $error)
                  <li>{{ $error }}</li>
               @endforeach
            </ul>
         </div>
      @endif
      
      <?php
         echo Form::open(array('url'=>'/validation'));
      ?>
      
      <table border = '1'>
         <tr>
            <td align = 'center' colspan = '2'>Login</td>
         </tr>
         <tr>
            <td>Username</td>
            <td><?php echo Form::text('username'); ?></td>
         </tr>
         <tr>
            <td>Password</td>
            <td><?php echo Form::password('password'); ?></td>
         </tr>
         <tr>
            <td align = 'center' colspan = '2'
               ><?php echo Form::submit('Login'); ?  ></td>
         </tr>
      </table>
      
      <?php
         echo Form::close();
      ?>
   
   </body>
</html>

Шаг 5 — Добавьте следующие строки в app / Http / rout.php .

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

Route::get('/validation','ValidationController@showform');
Route::post('/validation','ValidationController@validateform');

Шаг 6 — Посетите следующий URL для проверки правильности.

http://localhost:8000/validation

Шаг 7 — Нажмите кнопку «Войти» , не вводя ничего в текстовое поле. Вывод будет таким, как показано на следующем рисунке.

Авторизоваться

Laravel — Загрузка файлов

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

В файле представления нам нужно создать входной файл, добавив следующую строку кода.

Form::file('file_name');

В Form :: open () нам нужно добавить ‘files’ => ‘true’, как показано ниже. Это облегчает загрузку формы из нескольких частей.

Form::open(array('url' => '/uploadfile','files'=>'true'));

пример

Шаг 1 — Создайте файл представления с именем resources / views / uploadfile.php и скопируйте следующий код в этот файл.

ресурсы / виды / uploadfile.php

<html>
   <body>
      <?php
         echo Form::open(array('url' => '/uploadfile','files'=>'true'));
         echo 'Select the file to upload.';
         echo Form::file('image');
         echo Form::submit('Upload File');
         echo Form::close();
      ?>
   </body>
</html>

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

php artisan make:controller UploadFileController --plain

Шаг 3 — После успешного выполнения вы получите следующий вывод —

UploadFileController

Шаг 4 — Скопируйте следующий код в

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UploadFileController extends Controller {
   public function index() {
      return view('uploadfile');
   }
   public function showUploadFile(Request $request) {
      $file = $request->file('image');
   
      //Display File Name
      echo 'File Name: '.$file->getClientOriginalName();
      echo '<br>';
   
      //Display File Extension
      echo 'File Extension: '.$file->getClientOriginalExtension();
      echo '<br>';
   
      //Display File Real Path
      echo 'File Real Path: '.$file->getRealPath();
      echo '<br>';
   
      //Display File Size
      echo 'File Size: '.$file->getSize();
      echo '<br>';
   
      //Display File Mime Type
      echo 'File Mime Type: '.$file->getMimeType();
   
      //Move Uploaded File
      $destinationPath = 'uploads';
      $file->move($destinationPath,$file->getClientOriginalName());
   }
}

Шаг 5 — Добавьте следующие строки в app / Http / rout.php .

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

Route::get('/uploadfile','UploadFileController@index');
Route::post('/uploadfile','UploadFileController@showUploadFile');

Шаг 6 — Посетите следующий URL, чтобы проверить работоспособность загружаемого файла.

http://localhost:8000/uploadfile

Шаг 7 — Вы получите приглашение, как показано на следующем рисунке.

Просмотр файла

Laravel — Отправка электронной почты

Laravel использует бесплатную многофункциональную библиотеку SwiftMailer для отправки электронных писем. Используя функцию библиотеки, мы можем легко отправлять электронные письма без особых хлопот. Шаблоны электронной почты загружаются так же, как и представления, что означает, что вы можете использовать синтаксис Blade и вводить данные в свои шаблоны.

Следующая таблица показывает синтаксис и атрибуты функции отправки

Синтаксис void send (строка | массив $ view, массив $ data, Closure | строка $ callback)
параметры
  • $ view (string | array) — имя представления, которое содержит сообщение электронной почты

  • $ data (array) — массив данных для передачи на просмотр

  • $ callback — обратный вызов Closure, который получает экземпляр сообщения, позволяя настраивать получателей, тему и другие аспекты почтового сообщения.

Возвращает ничего такого
Описание Отправляет электронную почту.

$ view (string | array) — имя представления, которое содержит сообщение электронной почты

$ data (array) — массив данных для передачи на просмотр

$ callback — обратный вызов Closure, который получает экземпляр сообщения, позволяя настраивать получателей, тему и другие аспекты почтового сообщения.

В третьем аргументе $ callback closure получил экземпляр сообщения, и с этим экземпляром мы также можем вызвать следующие функции и изменить сообщение, как показано ниже.

  • $ message → subject («Добро пожаловать в пункт учебников»);
  • $ message → from (’email@example.com ‘,’ Mr. Example ‘);
  • $ message → to (’email@example.com ‘,’ Mr. Example ‘);

Некоторые из менее распространенных методов включают в себя —

  • $ message → sender (’email@example.com ‘,’ Mr. Example ‘);
  • $ message → returnPath (’email@example.com ‘);
  • $ message → cc (’email@example.com ‘,’ Mr. Example ‘);
  • $ message → bcc (’email@example.com ‘,’ Mr. Example ‘);
  • $ message → replyTo (’email@example.com ‘,’ Mr. Example ‘);
  • $ сообщение → приоритет (2);

Чтобы прикрепить или встроить файлы, вы можете использовать следующие методы —

  • $ message → attach (‘путь / к / attachment.txt’);
  • $ message → embed (‘path / to / attachment.jpg’);

Почту можно отправлять в виде HTML или текста. Вы можете указать тип почты, которую вы хотите отправить в первом аргументе, передав массив, как показано ниже. Тип по умолчанию — HTML. Если вы хотите отправить текстовое сообщение, используйте следующий синтаксис.

Синтаксис

Mail::send([‘text’=>’text.view’], $data, $callback);

В этом синтаксисе первый аргумент принимает массив. Используйте текст в качестве имени ключа представления в качестве значения ключа.

пример

Шаг 1. Теперь мы отправим электронное письмо из учетной записи Gmail, для чего вам необходимо настроить свою учетную запись Gmail в файле среды Laravel файле .env . Включите двухэтапную проверку в своей учетной записи Gmail и создайте специальный пароль приложения, а затем измените параметры .env, как показано ниже.

.env

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Шаг 2 — После изменения файла .env выполните две приведенные ниже команды, чтобы очистить кэш и перезапустить сервер Laravel.

php artisan config:cache

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

php artisan make:controller MailController --plain

Шаг 4 — После успешного выполнения вы получите следующий вывод —

MailController

Шаг 5 — Скопируйте следующий код в

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

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

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

Шаг 6 — Скопируйте следующий код в файл resources / views / mail.blade.php .

ресурсы / виды / mail.blade.php

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

Шаг 7 — Добавьте следующие строки в app / Http / rout.php.

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

Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');

Шаг 8 — Посетите следующий URL, чтобы проверить основную электронную почту.

http://localhost:8000/sendbasicemail

Шаг 9 — Экран вывода будет выглядеть примерно так. Проверьте свой почтовый ящик, чтобы увидеть основной вывод электронной почты.

Основная электронная почта отправлена

Шаг 10 — Посетите следующий URL, чтобы проверить электронную почту в формате HTML.

http://localhost:8000/sendhtmlemail

Шаг 11 — Экран вывода будет выглядеть примерно так. Проверьте свой почтовый ящик, чтобы увидеть HTML-вывод электронной почты.

HTML Email

Шаг 12 — Посетите следующий URL, чтобы проверить HTML-письмо с вложением.

http://localhost:8000/sendattachmentemail

Шаг 13 — Вы можете увидеть следующий вывод

Письмо отправлено

Примечание. В файле MailController.php адрес электронной почты в методе from должен быть адресом электронной почты, с которого вы можете отправить адрес электронной почты. Как правило, это должен быть адрес электронной почты, настроенный на вашем сервере.

Ларавел — Аякс

Ajax (асинхронный JavaScript и XML) представляет собой набор методов веб-разработки, использующих множество веб-технологий, используемых на стороне клиента для создания асинхронных веб-приложений. Импортируйте библиотеку jquery в ваш файл представления, чтобы использовать функции jjery ajax, которые будут использоваться для отправки и получения данных с помощью ajax с сервера. На стороне сервера вы можете использовать функцию response () для отправки ответа клиенту, а для отправки ответа в формате JSON вы можете связать функцию response с помощью функции json ().

Синтаксис функции json ()

json(string|array $data = array(), int $status = 200, array $headers = array(), int $options)

пример

Шаг 1 — Создайте файл представления с именем resources / views / message.php и скопируйте следующий код в этот файл.

<html>
   <head>
      <title>Ajax Example</title>
      
      <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
      </script>
      
      <script>
         function getMessage() {
            $.ajax({
               type:'POST',
               url:'/getmsg',
               data:'_token = <?php echo csrf_token() ?>',
               success:function(data) {
                  $("#msg").html(data.msg);
               }
            });
         }
      </script>
   </head>
   
   <body>
      <div id = 'msg'>This message will be replaced using Ajax. 
         Click the button to replace the message.</div>
      <?php
         echo Form::button('Replace Message',['onClick'=>'getMessage()']);
      ?>
   </body>

</html>

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

php artisan make:controller AjaxController --plain

Шаг 3 — После успешного выполнения вы получите следующий вывод —

AjaxController

Шаг 4 — Скопируйте следующий код в

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

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class AjaxController extends Controller {
   public function index() {
      $msg = "This is a simple message.";
      return response()->json(array('msg'=> $msg), 200);
   }
}

Шаг 5 — Добавьте следующие строки в app / Http / rout.php .

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

Route::get('ajax',function() {
   return view('message');
});
Route::post('/getmsg','AjaxController@index');

Шаг 6 — Посетите следующий URL, чтобы проверить функциональность Ajax.

http://localhost:8000/ajax

Шаг 7 — Вы будете перенаправлены на страницу, где вы увидите сообщение, как показано на следующем рисунке.

Заменить сообщение

Шаг 8 — После нажатия кнопки результат будет выглядеть, как показано на следующем рисунке.

Простое сообщение

Laravel — Обработка ошибок

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

Важные моменты

Прежде чем продолжить, чтобы подробно узнать об обработке ошибок в Laravel, обратите внимание на следующие важные моменты:

  • Для любого нового проекта Laravel по умолчанию регистрирует ошибки и исключения в классе App \ Exceptions \ Handler . Затем они отправляются обратно пользователю для анализа.

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

Для любого нового проекта Laravel по умолчанию регистрирует ошибки и исключения в классе App \ Exceptions \ Handler . Затем они отправляются обратно пользователю для анализа.

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

Журнал ошибок

  • По умолчанию режим отладки установлен на false, и вы можете изменить его на true . Это позволяет пользователю отслеживать все ошибки со следами стека.

По умолчанию режим отладки установлен на false, и вы можете изменить его на true . Это позволяет пользователю отслеживать все ошибки со следами стека.

Отладка приложения

  • Конфигурация проекта Laravel включает опцию отладки, которая определяет, сколько информации об ошибке должно быть отображено пользователю. По умолчанию в веб-приложении для этого параметра установлено значение, определенное в переменных среды файла .env .

    • Значение имеет значение true в локальной среде разработки и значение false в производственной среде.

    • Если значение равно true в производственной среде, риск передачи конфиденциальной информации конечным пользователям выше.

Конфигурация проекта Laravel включает опцию отладки, которая определяет, сколько информации об ошибке должно быть отображено пользователю. По умолчанию в веб-приложении для этого параметра установлено значение, определенное в переменных среды файла .env .

Значение имеет значение true в локальной среде разработки и значение false в производственной среде.

Если значение равно true в производственной среде, риск передачи конфиденциальной информации конечным пользователям выше.

Журнал ошибок

Регистрация ошибок в веб-приложении помогает отслеживать их и при планировании стратегии их устранения. Информация журнала может быть настроена в веб-приложении в файле config / app.php . Обратите внимание на следующие моменты при работе с журналом ошибок в Laravel —

  • Laravel использует библиотеку монологов PHP.

  • Параметры ведения журнала, используемые для отслеживания ошибок: single, daily, syslog и errorlog .

  • Например, если вы хотите регистрировать сообщения об ошибках в файлах журналов, вы должны установить значение журнала в конфигурации вашего приложения на ежедневный, как показано в приведенной ниже команде —

Laravel использует библиотеку монологов PHP.

Параметры ведения журнала, используемые для отслеживания ошибок: single, daily, syslog и errorlog .

Например, если вы хотите регистрировать сообщения об ошибках в файлах журналов, вы должны установить значение журнала в конфигурации вашего приложения на ежедневный, как показано в приведенной ниже команде —

'log' => env('APP_LOG',’daily’),
  • Если в качестве параметра выбран режим ежедневного журнала, Laravel по умолчанию принимает журнал ошибок в течение 5 дней . Если вы хотите изменить максимальное количество файлов журнала, вам необходимо установить для параметра log_max_files в файле конфигурации желаемое значение.

Если в качестве параметра выбран режим ежедневного журнала, Laravel по умолчанию принимает журнал ошибок в течение 5 дней . Если вы хотите изменить максимальное количество файлов журнала, вам необходимо установить для параметра log_max_files в файле конфигурации желаемое значение.

‘log_max_files’ => 25;

Уровни серьезности

Поскольку Laravel использует библиотеку журналов PHP Monolog, для анализа уровней серьезности используются различные параметры. Доступны различные уровни серьезности: сообщения об ошибках, критические, аварийные и аварийные сообщения . Вы можете установить уровень серьезности, как показано в команде ниже —

'log_level' => env('APP_LOG_LEVEL', 'error')

Laravel — Обработка событий

События обеспечивают простую реализацию наблюдателя, которая позволяет пользователю подписываться и прослушивать различные события, запускаемые в веб-приложении. Все классы событий в Laravel хранятся в папке app / Events, а слушатели — в папке app / Listeners .

Команда artisan для генерации событий и слушателей в вашем веб-приложении показана ниже —

php artisan event:generate

Эта команда генерирует события и прослушиватели для соответствующих папок, как описано выше.

Генератор событий

События и прослушиватели служат отличным способом развязки веб-приложения, поскольку одно событие может иметь несколько прослушивателей, которые не зависят друг от друга. Папка событий, созданная командой artisan, содержит следующие два файла: event.php и SomeEvent.php. Они показаны здесь —

Event.php

<?php
namespace App\Events;
abstract class Event{
   //
}

Как упоминалось выше, event.php включает базовое определение класса Event и вызывает пространство имен App \ Events . Обратите внимание, что пользовательские или пользовательские события создаются в этом файле.

SomeEvent.php

<?php

namespace App\Events;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class SomeEvent extends Event{
   use SerializesModels;
   /**
      * Create a new event instance.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }
   
   /**
      * Get the channels the event should be broadcast on.
      *
      * @return array
   */
   
   public function broadcastOn() {
      return [];
   }
}

Обратите внимание, что этот файл использует сериализацию для трансляции событий в веб-приложении и что необходимые параметры также инициализируются в этом файле.

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

public function __construct(Order $order) {
   $this->order = $order;
}

Слушатели

Слушатели обрабатывают все действия, упомянутые в событии, которое регистрируется. Событие команды artisan : generate создает всех слушателей в каталоге app / listeners . Папка Listeners содержит файл EventListener.php, в котором есть все методы, необходимые для обработки слушателей.

EventListener.php

<?php

namespace App\Listeners;

use App\Events\SomeEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class EventListener{
   /**
      * Create the event listener.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }

   /**
      * Handle the event.
      *
      * @param SomeEvent $event
      * @return void
   */
   
   public function handle(SomeEvent $event) {
      //
   }
}

Как уже упоминалось в коде, он включает в себя функцию handle для управления различными событиями. Мы можем создавать различных независимых слушателей, которые нацелены на одно событие.

Laravel — Фасады

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

Как создать Фасад

Ниже приведены шаги для создания Фасад в Laravel —

  • Шаг 1 — Создать файл класса PHP.

  • Шаг 2 — Привязать этот класс к поставщику услуг.

  • Шаг 3 — Зарегистрируйте этого ServiceProvider для

    Config \ app.php в качестве провайдеров.

  • Шаг 4 — Создать класс, который распространяется на этот класс

    lluminate \ Support \ Фасады \ Фасад.

  • Шаг 5 — Зарегистрируйте пункт 4 в Config \ app.php как псевдонимы.

Шаг 1 — Создать файл класса PHP.

Шаг 2 — Привязать этот класс к поставщику услуг.

Шаг 3 — Зарегистрируйте этого ServiceProvider для

Config \ app.php в качестве провайдеров.

Шаг 4 — Создать класс, который распространяется на этот класс

lluminate \ Support \ Фасады \ Фасад.

Шаг 5 — Зарегистрируйте пункт 4 в Config \ app.php как псевдонимы.

Ссылка на класс фасадов

Laravel поставляется с множеством фасадов. В следующей таблице показаны встроенные ссылки на класс Facade —

Фасад Учебный класс Привязка сервисного контейнера
Приложение Осветить \ Foundation \ Application приложение
ремесленник Осветить \ Контракты \ Console \ Kernel ремесленник
Auth Осветить \ Auth \ AuthManager авт
Auth (экземпляр) Осветить \ Auth \ Guard
лопасть Осветить \ View \ Составители \ BladeCompiler blade.compiler
автобус Осветить \ Контракты \ Bus \ Dispatcher
кэш Осветить \ Cache \ Repository кэш
конфиг Осветить \ Config \ Repository конфиг
печенье Осветить \ Cookie \ CookieJar печенье
крипта Осветить \ Encryption \ Encrypter Encrypter
база данных Осветить \ Database \ DatabaseManager децибел
БД (Экземпляр) Осветить \ Database \ Connection
Событие Осветить \ События \ грузоотправитель События
файл Осветить \ FileSystem \ Filesystem файлы
Ворота Осветить \ Контракты \ Auth \ Access \ Gate
гашиш Осветить \ Контракты \ хеширование \ Hasher гашиш
вход Осветить \ Http \ Запрос запрос
Lang Осветить \ Translation \ Translator переводчик
Журнал Осветить \ Log \ Writer журнал
почта Осветить \ почта \ Mailer рассылка
пароль Осветить \ Auth \ Пароли \ PasswordBroker auth.password
Очередь Осветить \ Queue \ QueueManager очередь
Очередь (Экземпляр) Осветить \ Queue \ QueueInterface
Очередь (Базовый класс) Осветить \ Queue \ Queue
переадресовывать Осветить \ Routing \ редиректор переадресовывать
Redis Осветить \ Redis \ Database Redis
Запрос Осветить \ Http \ Запрос запрос
отклик Осветить \ Контракты \ Routing \ ResponseFactory
маршрут Осветить \ Routing \ Router маршрутизатор
схема Осветить \ Database \ Схемы \ Blueprint
сессия Осветить \ Session \ SessionManager сессия
Сессия (Экземпляр) Осветить \ Session \ магазин
Место хранения Осветить \ Контракты \ Filesystem \ Factory файловая система
URL Осветить \ Routing \ UrlGenerator URL
Validator Осветить \ Validation \ Factory валидатор
Валидатор (Экземпляр) Осветить \ Validation \ Validator
Посмотреть Осветить \ View \ Factory Посмотреть
Просмотр (Экземпляр) Осветить \ View \ View

пример

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

php artisan make:provider TestFacadesServiceProvider

Шаг 2 — После успешного выполнения вы получите следующий вывод —

FacadesServiceProvider

Шаг 3 — Создайте класс с именем TestFacades.php в App / Test .

Приложение / Тест / TestFacades.php

<?php
   namespace App\Test;
   class TestFacades{
      public function testingFacades() {
         echo "Testing the Facades in Laravel.";
      }
   }
?>

Шаг 4 — Создайте класс Facade с именем «TestFacades.php» в «App / Test / Facades» .

Приложение / Тест / Фасады / TestFacades.php

<?php

namespace app\Test\Facades;

use Illuminate\Support\Facades\Facade;

class TestFacades extends Facade {
   protected static function getFacadeAccessor() { return 'test'; }
}

Шаг 5 — Создайте класс Facade с именем TestFacadesServiceProviders.php в App / Test / Facades.

App / Провайдеры / TestFacadesServiceProviders.php

<?php

namespace App\Providers;

use App;
use Illuminate\Support\ServiceProvider;

class TestFacadesServiceProvider extends ServiceProvider {
   public function boot() {
      //
   }
   public function register() {
      App::bind('test',function() {
         return new \App\Test\TestFacades;
      });
   }
}

Шаг 6 — Добавьте поставщика услуг в файл config / app.php, как показано на рисунке ниже.

конфиг / app.php

Поставщик услуг

Шаг 7 — Добавьте псевдоним в файл config / app.php, как показано на рисунке ниже.

конфиг / app.php

кличка

Шаг 8 — Добавьте следующие строки в app / Http / rout.php.

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

Route::get('/facadeex', function() {
   return TestFacades::testingFacades();
});

Шаг 9 — Посетите следующий URL, чтобы проверить Фасад.

http://localhost:8000/facadeex

Шаг 10 — После посещения URL вы получите следующий вывод —

Тестирование фасадов

Laravel — Контракты

Контракты Laravel — это набор интерфейсов с различными функциями и основными услугами, предоставляемыми платформой.

Например, Illuminate \ Contracts \ Queue \ Queue contract использует метод, который необходим для очередей заданий, а Illuminate \ Contracts \ Mail \ Mailer использует метод для отправки электронных писем.

Каждый определенный контракт включает в себя соответствующую реализацию рамок. Все контракты Laravel доступны в репозитории GitHub, как указано ниже —

https://github.com/illuminate/contracts

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

Важные моменты

При работе с контрактами Laravel обратите внимание на следующие важные моменты:

  • Обязательно определять фасады в конструкторе класса.

  • Контракты явно определены в классах, и вам не нужно определять контракты в конструкторах.

Обязательно определять фасады в конструкторе класса.

Контракты явно определены в классах, и вам не нужно определять контракты в конструкторах.

пример

Рассмотрим контракт, используемый для авторизации в Laravel, который указан ниже —

<?php

namespace Illuminate\Contracts\Auth\Access;

interface Authorizable{
   /**
      * Determine if the entity has a given ability.
      *
      * @param string $ability
      * @param array|mixed $arguments
      * @return bool
   */
   public function can($ability, $arguments = []);
}

Контракт использует функцию can, которая включает в себя параметр с именем Способность и аргументы, которые используют идентификацию пользователя в форме массива .

Вы должны будете определить контракт, как показано в синтаксисе ниже —

interface <contract-name>

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

Следующий код показывает использование контракта для кэширования хранилища:

<?php

namespace App\Orders;
use Illuminate\Contracts\Cache\Repository as Cache;

class Repository{
   /**
      * The cache instance.
   */
   
   protected $cache;
   
   /**
      * Create a new repository instance.
      *
      * @param Cache $cache
      * @return void
   */
   
   public function __construct(Cache $cache) {
      $this->cache = $cache;
   }
}

Контракт не содержит реализации и новых зависимостей; Легко написать альтернативную реализацию указанного контракта, таким образом, пользователь может заменить реализацию кеша без изменения какой-либо базы кода.

Laravel — CSRF Защита

CSRF относится к атакам подделки сайтов на веб-приложения. CSRF-атаки — это неавторизованные действия, которые выполняют аутентифицированные пользователи системы. Таким образом, многие веб-приложения подвержены этим атакам.

Laravel предлагает защиту от CSRF следующим образом —

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

Реализация

Реализация защиты от CSRF в Laravel подробно обсуждается в этом разделе. Следующие пункты примечательны, прежде чем продолжить защиту CSRF —

  • CSRF реализован в HTML-формах, объявленных внутри веб-приложений. Вы должны включить скрытый проверенный токен CSRF в форму, чтобы промежуточное программное обеспечение защиты от CSRF в Laravel могло проверить запрос. Синтаксис показан ниже —

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

<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
  • Вы можете удобно создавать приложения, управляемые JavaScript, используя HTTP-библиотеку JavaScript, так как она включает в себя токен CSRF для каждого исходящего запроса.

  • Файл, а именно resources / assets / js / bootstrap.js, регистрирует все токены для приложений Laravel и содержит метатег, в котором хранится токен csrf с HTTP-библиотекой Axios .

Вы можете удобно создавать приложения, управляемые JavaScript, используя HTTP-библиотеку JavaScript, так как она включает в себя токен CSRF для каждого исходящего запроса.

Файл, а именно resources / assets / js / bootstrap.js, регистрирует все токены для приложений Laravel и содержит метатег, в котором хранится токен csrf с HTTP-библиотекой Axios .

Форма без токена CSRF

Рассмотрим следующие строки кода. Они показывают форму, которая принимает два параметра в качестве входных данных: электронную почту и сообщение .

<form>
   <label> Email </label>
      <input type = "text" name = "email"/>
      <br/>
   <label> Message </label> <input type="text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

Результатом вышеприведенного кода является показанная ниже форма, которую конечный пользователь может просмотреть —

Форма обратной связи

Форма, показанная выше, примет любую входную информацию от авторизованного пользователя. Это может сделать веб-приложение подверженным различным атакам.

Обратите внимание, что кнопка отправки включает функции в разделе контроллера. Функция postContact используется в контроллерах для связанных представлений. Это показано ниже —

public function postContact(Request $request) {
   return $request-> all();
}

Обратите внимание, что форма не содержит никаких токенов CSRF, поэтому конфиденциальная информация, передаваемая в качестве входных параметров, подвержена различным атакам.

Форма с токеном CSRF

В следующих строках кода показана форма, перепроектированная с использованием токенов CSRF.

<form method = ”post” >
   {{ csrf_field() }}
   <label> Email </label>
   <input type = "text" name = "email"/>
   <br/>
   <label> Message </label>
   <input type = "text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

Полученный результат вернет JSON с токеном, как показано ниже —

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@coderlessons.com"
}

Это токен CSRF, созданный при нажатии кнопки отправки.

Laravel — Аутентификация

Аутентификация — это процесс идентификации учетных данных пользователя. В веб-приложениях аутентификация управляется сессиями, которые принимают входные параметры, такие как электронная почта или имя пользователя и пароль, для идентификации пользователя. Если эти параметры совпадают, пользователь считается аутентифицированным.

команда

Laravel использует следующую команду для создания форм и связанные контроллеры для выполнения аутентификации —

php artisan make:auth

Эта команда помогает успешно создавать леса аутентификации, как показано на следующем снимке экрана:

Аутентификация

контроллер

Контроллером, который используется для процесса аутентификации, является HomeController .

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;

class HomeController extends Controller{
   /**
      * Create a new controller instance.
      *
      * @return void
   */
   
   public function __construct() {
      $this->middleware('auth');
   }
   
   /**
      * Show the application dashboard.
      *
      * @return \Illuminate\Http\Response
   */
   
   public function index() {
      return view('home');
   }
}

В результате сгенерированное приложение скаффолда создает страницу входа и страницу регистрации для выполнения аутентификации. Они как показано ниже —

Авторизоваться

Страница авторизации

Постановка на учет

регистр

Аутентификация пользователей вручную

Laravel использует фасад Auth, который помогает вручную аутентифицировать пользователей. Он включает в себя метод попытки подтвердить свою электронную почту и пароль.

Рассмотрим следующие строки кода для LoginController, который включает в себя все функции для аутентификации —

<?php

// Authentication mechanism
namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;

class LoginController extends Controller{
   /**
      * Handling authentication request
      *
      * @return Response
   */
   
   public function authenticate() {
      if (Auth::attempt(['email' => $email, 'password' => $password])) {
      
         // Authentication passed...
         return redirect()->intended('dashboard');
      }
   }
}

Laravel — Авторизация

В предыдущей главе мы изучили процесс аутентификации в Laravel. В этой главе описывается процесс авторизации в Laravel.

Разница между аутентификацией и авторизацией

Прежде чем углубляться в изучение процесса авторизации в Laravel, давайте разберемся в разнице между аутентификацией и авторизацией.

При аутентификации система или веб-приложение идентифицируют своих пользователей с помощью предоставленных ими учетных данных. Если он обнаруживает, что учетные данные действительны, они аутентифицированы, или же они не являются.

При авторизации система или веб-приложение проверяют, могут ли аутентифицированные пользователи получить доступ к ресурсам, к которым они пытаются получить доступ, или сделать запрос. Другими словами, он проверяет их права и разрешения на запрошенные ресурсы. Если он обнаруживает, что они могут получить доступ к ресурсам, это означает, что они авторизованы.

Таким образом, аутентификация включает проверку достоверности учетных данных пользователя, а авторизация включает проверку прав и разрешений для ресурсов, которые имеет аутентифицированный пользователь.

Механизм авторизации в Laravel

Laravel предоставляет простой механизм авторизации, который содержит два основных способа: Gates и Policies .

Написание ворот и политики

Ворота используются, чтобы определить, авторизован ли пользователь для выполнения определенного действия. Как правило, они определяются в App / Providers / AuthServiceProvider.php с использованием Gate Gate. Ворота также являются функциями, которые объявлены для выполнения механизма авторизации.

Политики объявляются в массиве и используются внутри классов и методов, которые используют механизм авторизации.

В следующих строках кода объясняется, как использовать Gates и Policies для авторизации пользователя в веб-приложении Laravel. Обратите внимание, что в этом примере функция загрузки используется для авторизации пользователей.

<?php

namespace App\Providers;

use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider{
   /**
      * The policy mappings for the application.
      *
      * @var array
   */
   
   protected $policies = [
      'App\Model' => 'App\Policies\ModelPolicy',
   ];
   
   /**
      * Register any application authentication / authorization services.
      *
      * @param \Illuminate\Contracts\Auth\Access\Gate $gate
      * @return void
   */
   
   public function boot(GateContract $gate) {
      $this->registerPolicies($gate);
      //
   }
}

Laravel — Ремесленная Консоль

Платформа Laravel предоставляет три основных инструмента для взаимодействия через командную строку, а именно: Artisan, Ticker и REPL . В этой главе подробно рассказывается об Artisan.

Введение в Artisan

Artisan — это интерфейс командной строки, часто используемый в Laravel, и он включает в себя набор полезных команд для разработки веб-приложения.

пример

Вот список нескольких команд в Artisan вместе с их соответствующими функциями —

Чтобы начать проект Laravel

php artisan serve

Включить механизм кэширования

php artisan route:cache

Для просмотра списка доступных команд, поддерживаемых Artisan

php artisan list

Для просмотра справки о любой команде и просмотра доступных параметров и аргументов

php artisan help serve

На следующем снимке экрана показан вывод приведенных выше команд —

Artisan Help Serve

Написание команд

В дополнение к командам, перечисленным в Artisan, пользователь также может создать собственную команду, которую можно использовать в веб-приложении. Обратите внимание, что команды хранятся в каталоге app / console / commands .

Команда по умолчанию для создания пользовательской команды показана ниже —

php artisan make:console <name-of-command>

После того, как вы введете приведенную выше команду, вы сможете увидеть вывод, как показано на скриншоте, приведенном ниже —

defaultCommand

Файл, созданный для DefaultCommand, называется DefaultCommand.php и показан ниже:

<?php

namespace App\Console\Commands;
use Illuminate\Console\Command;

class DefaultCommand extends Command{
   /**
      * The name and signature of the console command.
      *
      * @var string
   */
   
   protected $signature = 'command:name';
   
   /**
      * The console command description.
      *
      * @var string
   */
   
   protected $description = 'Command description';
   
   /**
      * Create a new command instance.
      *
      * @return void
   */
   
   public function __construct() {
      parent::__construct();
   }
   
   /**
      * Execute the console command.
      *
      * @return mixed
   */
   
   public function handle() {
      //
   }
}

Этот файл содержит подпись и описание для команды, определенной пользователем. Открытая функция с именем handle выполняет функциональные возможности при выполнении команды. Эти команды зарегистрированы в файле Kernel.php в том же каталоге.

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

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel {
   /**
      * The Artisan commands provided by your application.
      *
      * @var array
   */
   
   protected $commands = [
      // Commands\Inspire::class,
      Commands\DefaultCommand::class
   ];
   
   /**
      * Define the application's command schedule.
      *
      * @param \Illuminate\Console\Scheduling\Schedule $schedule
      * @return void
   */
   
   protected function schedule(Schedule $schedule) {
      // $schedule->command('inspire')
      // ->hourly();
   }
}

Обратите внимание, что расписание задач для данной команды определено в функции с именем schedule , которая включает в себя параметр для планирования задач, который принимает почасовой параметр.

Команды зарегистрированы в массиве команд, который включает путь и имя команд.

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

Давайте посмотрим, как просмотреть атрибуты нашей команды DefaultCommand . Вы должны использовать команду, как показано ниже —

php artisan help DefaultCommand

Laravel — Шифрование

Шифрование — это процесс преобразования простого текста в сообщение с использованием некоторых алгоритмов, так что любой третий пользователь не может прочитать информацию. Это полезно для передачи конфиденциальной информации, поскольку у злоумышленника меньше шансов нацелиться на передаваемую информацию.

Шифрование выполняется с использованием процесса, называемого Криптография . Текст, который должен быть зашифрован, называется простым текстом, а текст или сообщение, полученное после шифрования, называется шифрованным текстом . Процесс преобразования зашифрованного текста в обычный текст называется расшифровкой .

Laravel использует шифратор AES-256 и AES-128 , который использует Open SSL для шифрования. Все значения, включенные в Laravel, подписаны с использованием протокольного кода аутентификации сообщений, поэтому базовое значение не может быть подделано после его шифрования.

конфигурация

Команда, использованная для генерации ключа в Laravel, показана ниже —

php artisan key:generate

Обратите внимание, что эта команда использует генератор безопасных случайных байтов PHP, и вы можете увидеть результат, как показано на скриншоте ниже —

Ключ Ремесленника

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

Заметка

Значения для шифрования должным образом выровнены в файле config / app.php , который включает в себя два параметра для шифрования, а именно ключ и шифр . Если значение, использующее этот ключ, не выровнено должным образом, все значения, зашифрованные в Laravel, будут небезопасными.

Процесс шифрования

Шифрование значения может быть выполнено с помощью помощника шифрования в контроллерах класса Laravel. Эти значения шифруются с использованием OpenSSL и шифра AES-256. Все зашифрованные значения подписаны кодом аутентификации сообщений (MAC) для проверки любых изменений зашифрованной строки.

defaultCommand

Показанный ниже код упоминается в контроллере и используется для хранения секретного или конфиденциального сообщения.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class DemoController extends Controller{
   **
      * Store a secret message for the user.
      *
      * @param Request $request
      * @param int $id
      * @return Response
   */
   
   public function storeSecret(Request $request, $id) {
      $user = User::findOrFail($id);
      $user->fill([
         'secret' => encrypt($request->secret)
      ])->save();
   }
}

Процесс дешифрования

Расшифровка значений выполняется с помощью помощника расшифровки . Соблюдайте следующие строки кода —

use Illuminate\Contracts\Encryption\DecryptException;

// Exception for decryption thrown in facade
try {
   $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
   //
}

Обратите внимание, что если процесс расшифровки не был успешным из-за использования недопустимого MAC-адреса, выдается соответствующее исключение.

Laravel — Хэширование

Хеширование — это процесс преобразования строки символов в более короткое фиксированное значение или ключ, представляющий исходную строку. Laravel использует фасад Hash, который обеспечивает безопасный способ хэширования паролей.

Основное использование

На следующем снимке экрана показано, как создать контроллер с именем passwordController, который используется для хранения и обновления паролей.

пароль

Следующие строки кода объясняют функциональность и использование passwordController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller

class passwordController extends Controller{
   /**
      * Updating the password for the user.
      *
      * @param Request $request
      * @return Response
   */
   
   public function update(Request $request) {
      // Validate the new password length...
      $request->user()->fill([
         'password' => Hash::make($request->newPassword) // Hashing passwords
      ])->save();
   }
}

Хешированные пароли хранятся с использованием метода make . Этот метод позволяет управлять рабочим фактором алгоритма хеширования bcrypt , который широко используется в Laravel.

Проверка пароля против хэша

Вы должны проверить пароль по хешу, чтобы проверить строку, которая использовалась для преобразования. Для этого вы можете использовать метод проверки . Это показано в приведенном ниже коде —

if (Hash::check('plain-text', $hashedPassword)) {
   // The passwords match...
}

Обратите внимание, что метод check сравнивает простой текст с переменной hashedPassword и, если результат равен true, возвращает значение true.

Laravel — Понимание процесса релиза

У каждого фреймворка веб-приложений есть своя история версий, и она постоянно обновляется и поддерживается. Каждая последняя версия приносит новые функциональные возможности и функции, которые либо изменены, либо устарели, поэтому важно знать, какая версия подойдет для ваших проектов.

Когда дело доходит до Laravel, есть две активные версии, как указано ниже —

  • Laravel 4 — выпущен в мае 2013
  • Laravel 5.1 — выпущен в феврале 2015

Laravel 5.1 также включает в себя различные выпуски с последней версией Laravel 5.1.5, которая включает в себя все надежные функции для веб-разработки. Дорожная карта Laravel или релиз версии показан на рисунке ниже —

Процесс выпуска Laravel

Следующие пункты заслуживают внимания в контексте понимания процесса выпуска Laravel —

  • Старый каталог app / models удален в Laravel 5.1.

  • Все контроллеры, промежуточное программное обеспечение и запросы сгруппированы в каталоге в папке app / Http.

  • Новая папка, а именно каталог провайдеров, заменяется файлами app / start в предыдущих версиях Laravel 4.x.

  • Все языковые файлы и представления перемещаются в каталог ресурсов .

  • Новый маршрут команды ремесленника : кеш используется для регистрации новых маршрутов и включен в выпуск Laravel 5.1 и последующие версии.

  • Laravel поддерживает промежуточное ПО HTTP, а также включает токены CSRF и модель аутентификации.

  • Все модели аутентификации находятся в одном каталоге, а именно resources / views / auth . Он включает в себя регистрацию пользователей, аутентификацию и контроллеры паролей.

Старый каталог app / models удален в Laravel 5.1.

Все контроллеры, промежуточное программное обеспечение и запросы сгруппированы в каталоге в папке app / Http.

Новая папка, а именно каталог провайдеров, заменяется файлами app / start в предыдущих версиях Laravel 4.x.

Все языковые файлы и представления перемещаются в каталог ресурсов .

Новый маршрут команды ремесленника : кеш используется для регистрации новых маршрутов и включен в выпуск Laravel 5.1 и последующие версии.

Laravel поддерживает промежуточное ПО HTTP, а также включает токены CSRF и модель аутентификации.

Все модели аутентификации находятся в одном каталоге, а именно resources / views / auth . Он включает в себя регистрацию пользователей, аутентификацию и контроллеры паролей.

Релизы Laravel

Версия Релиз Исправление ошибок до Исправления безопасности до
V1 Июнь 2011
V2 Сентябрь 2011
v3 Февраль 2012
v4 Май 2013
5.0 4 февраля 2015 г. 4 августа 2015 г. 4 февраля 2016 г.
5,1 (LTS) 9 июня 2015 г. 9 июня 2017 г. 9 июня 2018 г.
5,2 21 декабря 2015 г. 21 июня 2016 г. 21 декабря 2016 г.
5,3 23 августа 2016 г. 23 февраля 2017 г. 23 августа 2017 г.
5,4 24 января 2017 г. 24 июля 2017 24 января 2018 г.
5,5 (LTS) 30 августа 2017 30 августа 2019 г. 30 августа 2020 г.
5,6 7 февраля 2018 г. 7 августа 2018 г. 7 февраля 2019 г.
5,7 4 сентября 2018 г. 4 февраля 2019 г. 4 сентября 2019 г.

Обратите внимание, что выделенная версия отмечает последний выпуск.

Laravel — Гость Гейтс

Функция «Гостевые ворота пользователя» является дополнением к последней версии 5.7, выпущенной в сентябре 2018 года. Эта функция используется для запуска процесса авторизации для определенных пользователей.

В Laravel 5.6 была процедура, при которой он возвращал false для неаутентифицированных пользователей. В Laravel 5.7 мы можем разрешить гостям проходить проверки авторизации, используя особую подсказку типа Nullable в указанном контроллере, как указано ниже —

<?php
Gate::define('view-post', function (?User $user) {
   // Guests
});

Объяснение Кодекса

Используя подсказку типа NULL, переменная $ user будет иметь значение NULL, когда гостевой пользователь будет передан в строб. Затем вы можете принять решение об авторизации действия. Если вы разрешите пустые типы и вернете true, то у гостя будет авторизация. Если вы не используете подсказку обнуляемого типа, гости автоматически получат ответ 403 для Laravel 5.7, который показан ниже —

Nullable Type Hint

Разница между ошибками 403 и 404 заключается в том, что 404 отображается, когда пользователь пытается получить доступ к неизвестному ресурсу или URL-адресу, и ошибка 403, как указано в снимке выше, отображается, если неавторизованный пользователь заходит на веб-сайт.

Laravel — Artisan Commands

Laravel 5.7 поставляется с новым способом обработки и тестирования новых команд. Он включает в себя новую функцию тестирования команд ремесленников, и демонстрация упомянута ниже —

class ArtisanCommandTest extends TestCase{
   public function testBasicTest() {
      $this->artisan('nova:create', [
         'name' => 'My New Admin panel'
      ])
      ->expectsQuestion('Please enter your API key', 'apiKeySecret')
      ->expectsOutput('Authenticating...')
      ->expectsQuestion('Please select a version', 'v1.0')
      ->expectsOutput('Installing...')
      ->expectsQuestion('Do you want to compile the assets?', 'yes')
      ->expectsOutput('Compiling assets...')
      ->assertExitCode(0);
   }
}

Объяснение кода

Здесь новый класс с именем «ArtisanCommandTest» создается в модуле тестовых случаев. Он включает в себя базовую функцию testBasicTest, которая включает в себя различные функции утверждений.

Команда ремесленника ожидает, что вопрос включает в себя два атрибута. Один с вопросом, а другой с apiKeySecret . Здесь ремесленник проверяет apiKeySecret и проверяет ввод, отправленный пользователем.

Тот же сценарий применяется к вопросу «Пожалуйста, выберите версию», где пользователь должен упомянуть конкретную версию.

Laravel — Настройки пагинации

Laravel включает функцию разбиения на страницы, которая помогает пользователю или разработчику включить функцию разбиения на страницы. Lagvel paginator интегрирован с построителем запросов и Eloquent ORM. Метод paginate автоматически позаботится об установке необходимого предела и заданного смещения. Он принимает только один параметр для разбивки на страницы, то есть количество элементов, отображаемых на одной странице.

Laravel 5.7 включает новый метод разбиения на страницы для настройки количества страниц на каждой стороне пагинатора. Новый метод больше не нуждается в настраиваемом представлении нумерации страниц.

Демонстрация кода пользовательского представления разбивки на страницы приведена ниже —

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
class UserController extends Controller{
   /**
   * Show all of the users for the application.
   *
   * @return Response
   */
   public function index() {
      $users = DB::table('users')->paginate(15);
      return view('user.index', ['users' => $users]);
   }
}

Новая настройка пагинации в соответствии со стандартами Laravel упоминается ниже —

<?php
User::paginate(10)->onEachSide(5);

Обратите внимание, что onEachSide относится к подразделу каждой записи нумерации страниц с 10 и подразделом 5.

Laravel — Dump Server

Сервер дампа Laravel поставляется с версией Laravel 5.7. Предыдущие версии не включают в себя сервер дампа. Сервер дампа будет зависимостью разработки в файле компоновщика laravel / laravel.

С выпуском версии 5.7 вы получите эту команду, которая включает в себя концепцию «из коробки», которая позволяет пользователю выгружать данные в консоль или файл HTML, а не в браузер. Выполнение команды упоминается ниже —

php artisan dump-server
# Or send the output to an HTML file
php artisan dump-server --format=html > dump.html

объяснение

Команда запускает сервер в фоновом режиме, который помогает в сборе данных, отправляемых из приложения, который отправляет вывод через консоль. Когда команда не выполняется на переднем плане, ожидается, что функция dump () будет работать по умолчанию.

Laravel — URL действия

Laravel 5.7 представляет новую функцию под названием «URL вызываемого действия». Эта функция похожа на ту, что в Laravel 5.6, которая принимает строку в методе действия. Основное назначение нового синтаксиса, представленного в Laravel 5.7, состоит в том, чтобы напрямую разрешить вам доступ к контроллеру.

Синтаксис, используемый в версии Laravel 5.6, показан ниже —

<?php
$url = action('UserController@profile', ['id' => 1]);

Подобное действие, названное в Laravel 5.7, упомянуто ниже —

<?php
$url = action([PostsController::class, 'index']);

Одним из преимуществ нового синтаксического формата вызываемого массива является возможность прямой навигации к контроллеру, если разработчик использует текстовый редактор или IDE, поддерживающую навигацию по коду.