1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ixianming-laravel-route-service-provider

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Laravel RouteServiceProvider

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

[TOC]

О пакете расширения

Поставщик услуг пакета расширения наследует Laravel App\Providers\RouteServiceProvider. Поэтому после установки пакета расширений явные привязки, фильтры, пользовательская логика анализа и т. д. модели маршрутизации, определённой в методе boot() в App\Providers\RouteServiceProvider, остаются доступными.

Следует отметить, что изменения в map(), mapApiRoutes() и mapWebRoutes() в App\Providers\RouteServiceProvider недействительны, поскольку расширение перезаписывает метод map() и метод map() больше не ссылается на mapApiRoutes(), mapWebRoutes().

Функции

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

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

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

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

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

  • Проверка дублирования URL-адресов (полных URL-адресов с ограничениями домена) во всех маршрутах.

  • Вы можете настроить, разрешать ли регистрацию маршрутов на основе замыкания.

  • Вы можете настроить, можно ли дублировать имена именованных маршрутов.

  • Вы можете настроить, разрешено ли повторное использование контроллера.

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

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

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

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

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

Установка

Условия установки

  • PHP >= 7.0

  • Laravel >= 5.3

Можно установить и использовать Laravel 6 / Laravel 7 / Laravel 8 / Laravel 9!

Установка

composer require ixianming/laravel-route-service-provider

Используйте автоматическое обнаружение пакетов

  • В Laravel 5.5+ используется автоматическое обнаружение пакетов, поэтому не требуется вручную добавлять ServiceProvider.

  • Не нужно комментировать поставщика услуг маршрутизации Laravel (если только пакет расширения не выдаёт запрос).

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

Если версия Laravel меньше 5.5 или не используется автоматическое обнаружение пакетов:

  • Прокомментируйте поставщика услуг маршрутизации Laravel App\Providers\RouteServiceProvider::class в массиве providers в config/app.php.

  • Добавьте поставщика услуг пакета расширения Ixianming\Routing\RouteServiceProvider::class в массив providers в config/app.php ниже исходного поставщика услуг маршрутизации App\Providers\RouteServiceProvider::class.

'providers' => [
    /*
     * Laravel Framework Service Providers...
     */

    /*
     * Package Service Providers...
     */

    /*
     * Application Service Providers...
     */

    // App\Providers\RouteServiceProvider::class,
    Ixianming\Routing\RouteServiceProvider::class
]

Вручную добавьте функцию для обработки вывода Формат информации об исключениях

Добавьте код перед return метода render класса App\Exceptions\Handler:

if (method_exists(\Ixianming\Routing\ExceptionResponse::class, 'wantsJson')) {
    list($request, $exception) = \Ixianming\Routing\ExceptionResponse::wantsJson($request, $exception);
}

После модификации метод render должен выглядеть следующим образом:

public function render($request, Exception $exception)
{
    // Ваш код ...

    // Ваш код должен предшествовать этой функции.
    if (method_exists(\Ixianming\Routing\ExceptionResponse::class, 'wantsJson')) {
        list($request, $exception) = \Ixianming\Routing\ExceptionResponse::wantsJson($request, $exception);
    }
    // Между функцией и `return` не должно быть кода.
    return parent::render($request, $exception);
}

Примечания для удаления

  • После удаления пакета расширения не забудьте удалить код, который обрабатывает формат вывода ответа на исключение, добавленный в метод render класса App\Exceptions\Handler.

  • После удаления пакета расширения не забудьте удалить код атрибутов и методов, используемых пакетом расширения, добавленных в App\Providers\RouteServiceProvider.

  • После удаления пакета расширения не забудьте удалить Ixianming\Routing\RouteServiceProvider::class в массиве providers в config/app.php и раскомментировать App\Providers\RouteServiceProvider::class.

Использование

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

Группы промежуточного программного обеспечения по умолчанию web и api пакета расширения могут сопоставлять файлы маршрутизации.

Чтобы добавить группы промежуточного ПО, которым разрешено сопоставление файлов маршрутизации, добавьте атрибут $allowMatchRouteMiddlewareGroups в app/Providers/RouteServiceProvider.php:

protected $allowMatchRouteMiddlewareGroups = ['middlewareGroup_1', 'middlewareGroup_2'];
  • Значение атрибута $allowMatchRouteMiddlewareGroups представляет собой одномерный массив. Значением массива является имя группы промежуточного ПО, которой разрешено сопоставлять файл маршрутизации.
  • Значение атрибута $allowMatchRouteMiddlewareGroups объединяется со значением по умолчанию, поэтому вам нужно только определить новые группы промежуточного ПО, которые разрешено сопоставлять файлам маршрутизации в атрибуте $allowMatchRouteMiddlewareGroups.
  • Когда тип значения атрибута $allowMatchRouteMiddlewareGroups неправильный, будет использоваться значение по умолчанию.

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

Перед использованием этой функции вручную добавьте функцию для обработки формата вывода информации об исключении в методе render класса App\Exceptions\Handler, иначе эта функция будет недействительной.

Чтобы установить глобальный формат информации об исключениях по умолчанию в формате Json, добавьте атрибут $defaultExceptionJsonResponse в app/Providers/RouteServiceProvider.php и установите его значение в true:

protected $defaultExceptionJsonResponse = true;
  • Значением атрибута $defaultExceptionJsonResponse должна быть логическая величина (true или false).
  • Атрибут $defaultExceptionJsonResponse имеет значение по умолчанию false.
  • Если тип значения атрибута $defaultExceptionJsonResponse неправильный, то будет использовано значение по умолчанию.
  • Если значение атрибута $defaultExceptionJsonResponse равно true, то формат ответа информации об исключении, выдаваемой приложением, будет Json при доступе к неизвестному маршруту или маршруту под группой промежуточного ПО, которая не настраивает формат ответа информации об исключении.
  • Если значение атрибута $defaultExceptionJsonResponse не существует или значение равно null или значение равно false, то при доступе к неизвестному маршруту или маршруту под группой промежуточного ПО, которая не настраивает формат ответа информации об исключении, ответ информации об исключении, выданной приложением, формат определяется параметром Accept заголовка запроса. Формат ответа на исключение, независимо от того, как задано значение атрибута $defaultExceptionJsonResponse, формат ответа информации об исключении, выдаваемой приложением, определяется пользовательской настройкой группы промежуточного программного обеспечения. (подробности пользовательских правил см. ниже).

Настройка разрешения регистрации маршрута на основе замыкания

По умолчанию пакетам расширения разрешено регистрировать и использовать маршрут на основе замыкания.

Рекомендуется запретить регистрацию и использование маршрута на основе замыкания.

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

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

  • Во время командной разработки эта конфигурация может принудительно ограничить способ регистрации маршрутов разработчиками и снизить риск ошибок.

Чтобы запретить регистрацию и использование маршрута на основе замыкания, добавьте атрибут $closureRoute в app/Providers/RouteServiceProvider.php и установите его значение равным false:

protected $closureRoute = false;
  • Значение атрибута $closureRoute должно быть логическим значением (true или false).

  • Значение по умолчанию атрибута $closureRoute равно true.

  • Если тип значения атрибута $closureRoute неправильный, будет использоваться значение по умолчанию.

  • Когда значение $closureRoute равно true, это означает, что регистрация разрешена для использования маршрута на основе замыкания.

  • Когда значение $closureRoute равно false, это означает, что регистрация и использование маршрута на основе замыкания запрещены.

Установка уникальности имён именованных маршрутов

Требования к именам именованных маршрутов по умолчанию уникальны.

Примечание: имя именованного маршрута не должно заканчиваться на . (английский период). В laravel окончание на . будет считаться префиксом имени маршрута, а не полным именем.

Почему имена именованных маршрутов должны быть уникальными:

  • В некоторых сценариях, где именованные маршруты используются для управления разрешениями или создания URL-адресов, именованные маршруты с одинаковыми именами могут вызвать путаницу в бизнесе.

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

  • Если имя именованного маршрута допускает дублирование. Тогда URL именованного маршрута, сгенерированный с использованием метода route(), может не соответствовать желаемому.

Чтобы разрешить дублирование имён для именованных маршрутов, добавьте атрибут $uniqueRouteName в app/Providers/RouteServiceProvider.php и задайте его значение равным false:

protected $uniqueRouteName = false;
  • Значение атрибута $uniqueRouteName должно быть логическим значением (true или false).

  • Значение атрибута $uniqueRouteName по умолчанию равно true.

  • Если тип значения атрибута $uniqueRouteName неправильный, то будет использоваться значение по умолчанию.

  • Когда значение атрибута $uniqueRouteName равно true, это означает, что имя именованного маршрута должно быть уникальным.

  • Когда значение атрибута $uniqueRouteName равно false, это означает, что разрешено дублирование имени именованного маршрута.

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

Разрешение повторного использования контроллера

Контроллеры по умолчанию разрешены к повторному использованию.

Зачем запрещать повторное использование контроллеров:

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

  • Если повторное использование контроллера разрешено, то URL-адрес контроллера, сгенерированный с помощью метода action(), может не соответствовать желаемому.

Если вам необходимо предотвратить повторное использование контроллера, добавьте свойство $allowReuseAction в app/Providers/RouteServiceProvider.php и установите его значение в false:

protected $allowReuseAction = false;
  • Значение атрибута $allowReuseAction должно быть логическим значением (true или false).

  • Когда значение по умолчанию атрибута $allowReuseAction равно true.

  • При неправильном типе значения атрибута $allowReuseAction будет использоваться значение по умолчанию.

  • Когда значение атрибута $allowReuseAction равно true, повторное использование контроллера разрешается.

  • Когда значение свойства $allowReuseAction равно false, это означает, что повторное использование контроллера запрещено.

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

Проверка дублирования определения URL

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

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

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

URL относится к полному URL с ограничениями доменного имени.

Правила по умолчанию

Правила соответствия файлов маршрутизации по умолчанию

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

Правила соответствия по умолчанию:

  • Назовите его {middlewareGroupName}.php.

  • Начните с {middlewareGroupName}_.

  • Закончите на _{middlewareGroupName}.php.

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

Примечание: В правилах по умолчанию путь или имя файла не чувствительны к регистру.

Примечание: Один и тот же файл маршрутизации в каталоге routes не может быть загружен несколькими группами промежуточного программного обеспечения.

Примечание: Когда один и тот же файл маршрута в каталоге routes загружается более 3 раз, пакет расширения выдаст исключение. Разработчик должен проверить, цитируется ли файл маршрутизации повторно. Если правила соответствия маршрутизации настроены, вы также должны проверить правильность правил соответствия.

Например:

routes
   |-- web.php
   |-- api.php
   |-- web_errorTest_api.php
   |-- channels.php
   |-- console.php
   |-- welcome_web.PHP
   |-- welcome_api.PHP
   |-- web_User.php
   |-- api_User.php
   |-- Role
        |-- role_WEB.php
        |-- role_API.php
  • web.php, welcome_web.PHP, web_User.php, Role/role_WEB.php эти файлы маршрутизации будут назначены группе web промежуточного программного обеспечения.

  • api.php, welcome_api.PHP, api_User.php, Role/role_API.php эти файлы маршрутизации будут назначены группе api промежуточного программного обеспечения.

  • При загрузке файла маршрутизации web_errorTest_api.php пакет расширения выдаст ошибку, поскольку файл назначен как группе web, так и группе api промежуточного программного обеспечения. Разработчики должны учитывать это при именовании файлов маршрутизации с использованием правил по умолчанию. Корневое пространство имён, используемое всеми группами промежуточного ПО, которым разрешено сопоставлять файлы маршрутизации, по умолчанию имеет значение атрибута $namespace в App\Providers\RouteServiceProvider.

Поддомен, используемый по умолчанию

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

Префикс маршрутизации, используемый по умолчанию

  • Префикс для группы промежуточного ПО web по умолчанию пуст.

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

Например:

По умолчанию префиксом группы промежуточного ПО web является пустая строка; префикс группы промежуточного ПО api использует имя api. И так далее.

Префикс имени маршрута, используемый по умолчанию

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

Регулярные выражения ограничений параметров маршрутизации, используемые по умолчанию

Регулярные выражения ограничений where параметров маршрутизации, используемые всеми группами промежуточного ПО, которым разрешено сопоставлять файлы маршрутизации, по умолчанию пусты.

Формат ответа сообщения об исключении по умолчанию

Прежде чем использовать эту функцию, вручную добавьте функцию для обработки формата вывода информации об исключениях в методе render класса App\Exceptions\Handler, иначе эта функция будет недействительной.

  • Формат ответа сообщений об исключениях группы промежуточного ПО api по умолчанию — Json.

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

Пользовательские правила

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

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

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

Чтобы установить пользовательские правила, добавьте метод в app/Providers/RouteServiceProvider.php:

protected function customMiddlewareGroupsConfig()
{
    return array(
        '{middlewareGroupName}' => array(
            'namespace' => '',
            'domain' => '',
            'prefix' => '',
            'name' => '',
            'where' => [],
            'eJsonResponse' => false,
            'matchRule' => function ($fileRelativePath) {
                // your code ...
                // Возвращаемое значение должно быть логическим.
                return false;
            }
        )

        // ...
    );
}

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

Значение {middlewareGroupName} также является массивом. Настраиваемые ключи: namespace, domain, prefix, name, where, eJsonResponse и matchRule.

Настройка корневого пространства имён, используемого группой промежуточного ПО

Напоминание: если группа промежуточного ПО настраивает корневое пространство имён и оно не совпадает со значением свойства $namespace в App\Providers\RouteServiceProvider, то при использовании таких методов, как action(), redirectToAction() и т. д., где входящий параметр представляет собой строку контроллера, строка контроллера с полным пространством имён, начинающимся с \, должна передаваться, когда входящий параметр принадлежит контроллеру в этой группе промежуточного ПО.

Рекомендация: независимо от того, настраивается ли корневое пространство имён или нет, строка контроллера с полным пространством имён, начинающаяся с \, должна быть передана при использовании методов с входящим параметром строки контроллера, таких как action() и redirectToAction().

Например.

Контроллер Welcome@index принадлежит группе промежуточного ПО web и использует корневое пространство имён по умолчанию App\Http\Controllers. При использовании метода action() вы можете вызвать:

  • action('Welcome@index'); или
  • action('\App\Http\Controllers\Welcome@index');.

После настройки корневого пространства имён необходимо вызвать: action('\CustomNamespace\Welcome@index');.

Если вам нужно настроить корневое пространство имён, используемое группой промежуточного программного обеспечения, установите пару ключ-значение namespace в массиве конфигурации группы промежуточного ПО.

— Значение namespace должно быть строкой или null.

— Если тип значения namespace неверен, будет выброшено исключение.

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

Настройка поддоменов, используемых группой промежуточного ПО

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

— Значение domain должно быть строкой или null.

— Если тип значения domain неверен, будет выброшено исключение.

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

Настройка префикса маршрутизации, используемого группой промежуточного ПО

Чтобы настроить префикс маршрутизации, используемый группой промежуточного ПО, установите пару ключ-значение prefix в массиве конфигурации этой группы промежуточного ПО.

— Значение prefix должно быть строкой или null.

— Если тип значения prefix неверен, будет выброшено исключение.

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

Настройка имени префикса маршрута, используемого группой промежуточного ПО

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

— Значение name должно быть строкой или null.

— Если тип значения name неверен, будет выброшено исключение.

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

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

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

— Значением where должен быть массив или null

— Если тип значения where неверен, будет выброшено исключение.

Как правильно установить ограничения регулярного выражения для параметров маршрутизации см. в документации Laravel — Маршрутизация — Ограничения регулярного выражения.

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

Настройте, является ли формат ответа сообщения об исключении группы промежуточного ПО JSON

Прежде чем использовать эту функцию, вручную добавьте функцию для обработки формата вывода информации об исключениях в методе render класса App\Exceptions\Handler, иначе эта функция будет недействительной.

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

— Значение eJsonResponse должно быть логическим значением (true или false).

— Если тип значения eJsonResponse неверен, будет выброшено исключение. Нуль, формат ответа на сообщение об исключении определяется по умолчанию и глобальной настройкой по умолчанию $defaultExceptionJsonResponse.

  • Когда значение eJsonResponse равно true, при обращении к маршруту в этой группе промежуточного программного обеспечения ответ на выброшенное сообщение об ошибке имеет формат Json.

  • Если значение eJsonResponse равно false, то формат сообщения об ошибке определяется параметром Accept заголовка запроса при обращении к маршруту под этой группой промежуточного ПО.

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

Пользовательские правила соответствия файлов маршрутизации для групп промежуточного ПО

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

Примечание: когда один и тот же файл маршрута в каталоге routes загружается более 3 раз, пакет расширения выдаст исключение. Разработчик должен проверить, повторяется ли цитирование файла маршрутизации. Если правила сопоставления маршрутов настроены, вы также должны проверить правильность правил сопоставления.

  • Значение matchRule — это замыкание.

  • Путь файла маршрутизации будет передан в замыкание. Этот путь относится к каталогу routes. Разработчику необходимо закодировать правила соответствия пути файла маршрутизации и группы промежуточного ПО. Если путь файла маршрутизации соответствует условиям соответствия, замыкание должно вернуть true, в противном случае оно возвращает false.

    Примечание: переданный замыканию путь чувствителен к регистру.

    //e.g.
    //Пользовательские правила соответствия для веб-групп промежуточного ПО
    'web' => array(
        'matchRule' => function ($fileRelativePath) {
            $fileRelativePath = strtolower($fileRelativePath); //Переводим в нижний регистр
            if (Str::endsWith($fileRelativePath, '_web.php')) {
                  //Если файл маршрутизации заканчивается на `_web.php`, он назначается группе веб-промежуточного ПО
                  return true;
            } else {
                  return false;
            }
        }
    )
  • Возвращаемое значение замыкания должно быть логическим (true или false).

  • Выдаётся исключение, если значение matchRule не является замыканием или возвращаемое значение замыкания не является логическим значением.

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

Создание кэша маршрутов

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

Введите команду:

php artisan route:cache

Эта команда создаёт файл кэша маршрута в каталоге bootstrap/cache.

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

При использовании маршрута на основе замыкания при создании кэша будет выдано сообщение об ошибке!

Кроме того, если вы добавляете новые маршруты, вы должны создать новый кэш маршрутов!

Если вы хотите удалить файл кэша маршрутов, вы можете использовать команду:

php artisan route:clear

Лицензия

Пакет расширения представляет собой программное обеспечение с открытым исходным кодом, лицензированное по лицензии MIT.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ixianming-laravel-route-service-provider.git
git@api.gitlife.ru:oschina-mirror/ixianming-laravel-route-service-provider.git
oschina-mirror
ixianming-laravel-route-service-provider
ixianming-laravel-route-service-provider
master