A free and open-source book on ZF3 for beginners


5.8. Другие типы маршрутов

Типы маршрутов Hostname, Scheme, и Method используется реже по сравнению с типами, упомянутыми выше.

5.8.1. Hostname

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

7) Система управления содержимым (Content Management System или CMS) - это веб-сайт для совместного создания, редактирования и публикации содержимого (блогов, страниц, документов, видео и др.) с использованием централизованного веб-интерфейса. Такие системы делают возможным выполнение повседневных задач сайта, вроде публикации контента, даже для тех, кто далек от программирования.

'routename' => [
    'type' => Hostname::class,
    'options' => [
        'route' => ':subdomain.yourserver.com',
        'constraints' => [
            'subdomain' => '[a-zA-Z][a-zA-Z0-9_-]*'
        ], 
        'defaults' => [        
        ],
    ],
    'child_routes'=>[
        //...
    ],
],

В строке 1 примера выше мы определяем маршрут, который имеет тип Hostname. Опция route (строка 4) определяет доменное имя для сопоставления. :subdomain - шаблон, который может принимать различные значения поддомена. Ключ constraints определяет регулярное выражение, с которым должен совпадать параметр этого поддомена. Маршрут Hostname будет разделять домены, так что каждый сайт будет вести себя по-разному, в зависимости от возвращаемого параметра subdomain:

// Пример действия, которое использует параметры, возвращаемые
// маршрутом Hostname.
public function someAction() 
{
    // Получение от маршрута параметра 'subdomain'.
    $subdomain = $this->params()->fromRoute('subdomain', null);
  
    // Использование различных алгоритмов в зависимости от поддомена.
    //...		

    // Рендеринг шаблона представления.
    return new ViewModel();
}

5.8.2. Scheme

Тип маршрута Scheme полезен, если вам необходимо управлять протоколами HTTP и HTTPS 8 разными способами.

8) Протокол HTTPS, как правило, используется для безопасных соединений. Например, страницы аккаунта или страницы корзины. При использовании HTTPS данные запроса туннелируются через уровень защищённых cокетов (Secure Socket Layer или SSL) и недоступны третьей стороне.

Типичная конфигурация маршрута Scheme представлена ниже:

'routename' => [
    'type' => Scheme::class,
    'options' => [
        'scheme' => 'https',
        'defaults' => [
            'https' => true,
        ],    
    ],
    'child_routes'=>[
        //...
    ],
],

В этом фрагменте мы определяем маршрут типа Scheme. Он принимает опцию scheme, которая является схемой для сопоставления (http или https). Если схема в HTTP-запросе URL точно такая же, как в опции scheme, маршрут считается совпадающим с URL. Вы можете использовать ключ defaults, чтобы вернуть некоторые параметры. В примере выше будет возвращен булевый параметр https.

5.8.3. Method

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

'routename' => [
    'type' => Method::class,
    'options' => [
        'verb' => 'post',
        'defaults' => [        
        ],
    ],
    'child_routes'=>[
        //...
    ],
],

Так, мы определяем маршрут типа Method. Он принимает опцию verb , которая может быть разделенным запятыми списком допустимых HTTP-глаголов (таких как get, post, put, и др.)


Top