Spec-Zone.ru › CakePHP 3.2

Класс RequestHandlerComponent

Объект запроса для обработки альтернативных HTTP-запросов

Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и аналогичные. Эти устройства не используют AJAX-запросы, и этот компонент может указать, как Cake должен реагировать на различные потребности карманного компьютера и настольного компьютера.

Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
Extended by Cake\Controller\Component\RequestHandlerComponent
Пространство имен: Cake\Controller\Component
Ссылка: http://book.cakephp.org/3.0/ru/controllers/components/request-handling.html
Расположение: Controller/Component/RequestHandlerComponent.php

Краткое описание свойств

  • $_defaultConfig protected
    array
    Конфигурация по умолчанию
  • $_renderType protected
    string
    Шаблон для рендеринга заданного типа контента.
  • $enabled public
    boolean
    Определяет, будут ли вызываться колбэки для этого компонента
  • $ext public
    string
    Содержит расширение файла, проанализированное маршрутизатором
  • $response public
    Cake\Network\Response
    Хранит ссылку на Controller::$response

Унаследованные свойства

  • _componentMap, _registry, components, request _config, _configInitialized

Краткое описание методов

  • __construct() public
    Конструктор. Парсит принимаемые типы контента клиента с использованием HTTP_ACCEPT
  • _setExtension() protected

    Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если есть один общий тип, он назначается как тип ext/content для ответа. Будет установлен тип с наибольшим весом. Если у типа с наибольшим весом несколько типов, соответствующих расширениям, порядок указания расширений определяет, какой тип будет установлен.

  • accepts() public

    Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если оно есть), и на заголовке HTTP_ACCEPT. В отличие от Cake\Network\Request::accepts(), этот метод полностью работает с сопоставленными типами контента.

  • addInputType() public

    Добавляет новый сопоставленный тип входных данных. Сопоставленные типы входных данных автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().

  • beforeRedirect() public
    Обрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()
  • beforeRender() public

    Проверяет, может ли ответ считаться отличным в соответствии с заголовками запроса и заголовками кэширования ответа. Если он не был изменён, процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».

  • convertXml() public

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

  • implementedEvents() public
    Поддерживаемые события этого компонента.
  • initialize() public

    Проверяет, был ли запрошен определённый тип контента, и устанавливает RequestHandler::$ext соответствующим образом. Проверяет следующее в указанном порядке: 1. Значение '_ext', проанализированное маршрутизатором. 2. Конкретный AJAX-тип запроса, указанный наличием заголовка. 3. Заголовок Accept. За исключением AJAX-запроса, указанного с помощью второго метода, основанного на заголовке, тип должен быть настроен в Cake\Routing\Router.

  • isAtom() public
    Возвращает true, если текущий вызов принимает ответ Atom, в противном случае false
  • isMobile() public

    Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.

  • isRss() public
    Возвращает true, если текущий вызов принимает ответ RSS, в противном случае false
  • isWap() public
    Возвращает true, если клиент принимает WAP-контент
  • isXml() public
    Возвращает true, если текущий вызов принимает XML-ответ, в противном случае false
  • mapAlias() public
    Сопоставляет псевдоним типа контента обратно с его MIME-типом(ами)
  • prefers() public

    Определяет, какие типы контента предпочитает клиент. Если не указаны параметры, возвращается единственный тип контента, который клиент, скорее всего, предпочитает. Если $type — массив, возвращается первый элемент в массиве, который клиент принимает. Предпочтение определяется прежде всего расширением файла, проанализированным маршрутизатором, если оно указано, и во-вторых, списком типов контента, указанных в HTTP_ACCEPT.

  • renderAs() public

    Устанавливает либо класс представления, если он существует, либо путь к макету и шаблону представления. Имена этих элементов выводятся из входного параметра $type.

  • requestedWith() public
    Определяет тип контента данных, отправленных клиентом (например, в запросе POST)
  • respondAs() public

    Устанавливает заголовок ответа на основе имени индекса карты типов. Это оборачивает несколько методов, доступных в Cake\Network\Response. Это также позволяет использовать псевдонимы типов Content-Type.

  • responseType() public
    Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует
  • startup() public

    Метод startup компонента RequestHandler включает в себя несколько автоматических действий, связанных с обнаружением определённых свойств HTTP-запроса, включая:

  • viewClassMap() public
    Получатель/установщик для viewClassMap

Подробное описание методов

__construct()source public

__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )

Конструктор. Парсит принимаемые типы контента клиента с использованием HTTP_ACCEPT

Параметры

Cake\Controller\ComponentRegistry $registry
Объект ComponentRegistry.
массив $config необязательный []
Массив конфигурации.

Переопределяет

Cake\Controller\Component::__construct()

_setExtension()source protected

_setExtension( Cake\Network\Request $request , Cake\Network\Response $response )

Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если есть один общий тип, он назначается как тип ext/content для ответа. Будет установлен тип с наибольшим весом. Если у типа с наибольшим весом несколько типов, соответствующих расширениям, порядок указания расширений определяет, какой тип будет установлен.

Если html — один из предпочтительных типов, тип контента не будет установлен, это для предотвращения проблем с браузерами, которые предпочитают HTML и ещё несколько типов контента.

Параметры

Cake\Network\Request $request
Экземпляр запроса.
Cake\Network\Response $response
Экземпляр ответа.
END_OF_DOCUMENT_MARKER

accepts()source public

accepts( string|array|null $type null )

Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если оно есть), и заголовке HTTP_ACCEPT. В отличие от Cake\Network\Request::accepts(), этот метод полностью обрабатывает сопоставленные типы контента.

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

$this->RequestHandler->accepts(['xml', 'html', 'json']);

Возвращает true, если клиент принимает любой из предоставленных типов.

$this->RequestHandler->accepts('xml');

Возвращает true, если клиент принимает xml.

Параметры

строка|массив|null $type необязательно null

Может быть null (или без параметра), строкой с именем типа или массивом типов.

Возвращает

смешанный тип

Если передано null или нет параметра, возвращается массив типов контента, которые принимает клиент. Если передана строка, возвращается true, если клиент принимает её. Если передан массив, возвращается true, если клиент принимает один или несколько элементов в массиве.


addInputType()source public

addInputType( string $type , array $handler )

Добавляет новый сопоставленный тип входных данных. Сопоставленные типы входных данных автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().

Устарело

3.1.0 Используйте config('addInputType', ...) вместо этого.

Параметры

строка $type
Псевдоним типа, который преобразуется, например, json
массив $handler

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

Исключения

Cake\Core\Exception\Exception

beforeRedirect()source public

beforeRedirect( Cake\Event\Event $event , string|array $url , Cake\Network\Response $response )

Обрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()

Параметры

Cake\Event\Event $event
Событие Controller.beforeRedirect.
строка|массив $url
Строка или массив, содержащий местоположение перенаправления
Cake\Network\Response $response
Объект ответа.

Возвращает

Cake\Network\Response|null
Объект ответа, если перенаправление было перехвачено.

beforeRender()source public

beforeRender( Cake\Event\Event $event )

Проверяет, можно ли считать ответ отличным в соответствии с заголовками запроса и заголовками кэширования ответа. Если он не был изменён, то процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».

  • Если Router::extensions() включён, тип макета и шаблона изменяются на основе проаналированного расширения или заголовка Accept. Например, если запрашивается controller/action.xml, путь к представлению становится app/View/Controller/xml/action.ctp. Также, если controller/action запрашивается с Accept: application/xml в заголовках, путь к представлению станет app/View/Controller/xml/action.ctp. Типы макета и шаблона будут изменены только на типы MIME, распознаваемые Cake\Network\Response. Если вам нужно объявить дополнительные типы MIME, вы можете сделать это с помощью Cake\Network\Response::type() в методе beforeFilter() вашего контроллера.
  • Если существует помощник с тем же именем, что и расширение, он добавляется в контроллер.
  • Если расширение относится к типу, понимаемому RequestHandler, оно задаст этот тип Content-type в заголовке ответа.

Параметры

Cake\Event\Event $event
Событие Controller.beforeRender.

Возвращает

boolean
false, если процесс рендеринга должен быть прерван

convertXml()source public

convertXml( string $xml )

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

Параметры

строка $xml
Строка XML.

Возвращает

массив
Данные массива XML

implementedEvents()source public

implementedEvents( )

Поддерживаемые события этого компонента.

Возвращает

массив

Переопределяет

Cake\Controller\Component::implementedEvents()

initialize()source public

initialize( array $config )

Проверяет, был ли запрошен конкретный тип контента, и устанавливает RequestHandler::$ext соответственно. Проверяет следующее в указанном порядке: 1. Значение '_ext', проанализированное маршрутизатором. 2. Конкретный запрос AJAX, указанный наличием заголовка. 3. Заголовок Accept. За исключением AJAX-запроса, указанного вторым способом выше, тип должен быть настроен в Cake\Routing\Router.

Параметры

массив $config
Данные конфигурации.

См. также

\Cake\Routing\Router::extensions()

Переопределяет

Cake\Controller\Component::initialize()

isAtom()source public

isAtom( )

Возвращает true, если текущий вызов принимает ответ Atom, в противном случае — false

Возвращает

boolean
True, если клиент принимает ответ RSS

isMobile()source public

isMobile( )

Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.

Возвращает

boolean
True, если пользовательский агент — мобильный веб-браузер

isRss()source public

isRss( )

Возвращает true, если текущий вызов принимает ответ RSS, в противном случае — false

Возвращает

boolean
True, если клиент принимает ответ RSS

isWap()source public

isWap( )

Возвращает true, если клиент принимает WAP-контент

Возвращает

boolean

isXml()source public

isXml( )

Возвращает true, если текущий вызов принимает XML-ответ, в противном случае — false

Возвращает

boolean
True, если клиент принимает XML-ответ

mapAlias()source public

mapAlias( string|array $alias )

Преобразует псевдоним типа контента в его тип MIME.

Параметры

строка|массив $alias
Строковый псевдоним, подлежащий преобразованию в тип контента. Или массив псевдонимов, подлежащих сопоставлению.

Возвращает

строка|null|массив

Null для неопределённого псевдонима. Строковое значение сопоставленного типа псевдонима. Если псевдоним сопоставляется с несколькими типами контента, возвращается первый. Если для $alias передан массив, будет возвращён массив сопоставленных типов.


prefers()source public

prefers( string|array|null $type null )

Определяет, какие типы контента предпочитает клиент. Если параметры не заданы, возвращается единственный тип контента, который, скорее всего, предпочитается клиентом. Если $type — массив, возвращается первый элемент массива, который принимает клиент. Предпочтение определяется в первую очередь расширением файла, проанализированным маршрутизатором (если оно задано), а во вторую — списком типов контента, указанным в HTTP_ACCEPT.

Параметры

строка|массив|null $type необязательно null

Необязательный массив «дружественных» имён типов контента, например, «html», «xml», «js» и т. д.

Возвращает

смешанный тип

Если $type равен null или не указан, возвращается первый тип контента из списка на основе предпочтения. Если задан единственный тип, возвращается boolean, если этот тип предпочтительнее. Если задан массив типов, возвращается первый предпочтительный тип. Если тип не указан, возвращается первый предпочтительный тип.


END_OF_DOCUMENT_MARKER

renderAs()source public

renderAs( Cake\Controller\Controller $controller , string $type , array $options [] )

Устанавливает класс представления, если он существует, или путь к шаблону и макету представления. Имена выводятся из входного параметра $type.

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

Отобразить ответ как ответ 'ajax'.

$this->RequestHandler->renderAs($this, 'ajax');

Отобразить ответ как файл xml и принудительно скачать результат.

$this->RequestHandler->renderAs($this, 'xml', ['attachment' => 'myfile.xml'];

Параметры

Cake\Controller\Controller $controller
Ссылка на объект контроллера
строка $type
Тип ответа (например: 'ajax')
массив $options необязательно []
Массив опций

См. также

\Cake\Controller\Component\RequestHandlerComponent::respondAs()

requestedWith()source public

requestedWith( string|array|null $type null )

Определяет тип содержимого данных, отправленных клиентом (например, в запросе POST).

Параметры

строка|массив|null $type необязательно null
Может быть null (или без параметра), строковое имя типа или массив типов

Возвращает

смешанное

Если задан один тип, будет возвращено значение boolean. Если тип не указан, будет возвращено сопоставленное значение CONTENT_TYPE. Если задан массив, будет возвращен первый тип в типе содержимого запроса.


respondAs()source public

respondAs( string|array $type , array $options [] )

Устанавливает заголовок ответа на основе имени индекса карты типов. Это обёртка нескольких методов, доступных в Cake\Network\Response. Также позволяет использовать псевдонимы Content-Type.

Параметры

строка|массив $type

Дружественное имя типа, например 'html' или 'xml', или полный тип содержимого, например 'application/x-shockwave'.

массив $options необязательно []

Если $type — это дружественное имя типа, которое ассоциируется с более чем одним типом содержимого, $index используется для выбора типа содержимого.

Возвращает

boolean

Возвращает false, если дружественное имя типа, заданное в $type, не существует в карте типов или если заголовок Content-type уже был установлен этим методом.


responseType()source public

responseType( )

Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует.

Возвращает

смешанное

Строковый псевдоним типа содержимого или сырой тип содержимого, если карта псевдонимов не существует, в противном случае null


startup()source public

startup( Cake\Event\Event $event )

Метод startup компонента RequestHandler позволяет реализовать несколько автоматических действий, связанных с обнаружением определённых свойств HTTP-запроса, в том числе:

Если XML-данные отправляются методом POST, данные анализируются в объект XML, который назначается свойству $data контроллера, которое затем можно сохранить в объект модели.

Параметры

Cake\Event\Event $event
Событие запуска, которое было запущено.

viewClassMap()source public

viewClassMap( array|string|null $type null , array|null $viewClass null )

Геттер/сеттер для viewClassMap

Устаревшее

3.1.0 Используйте config('viewClassMap', ...) вместо этого.

Параметры

массив|строка|null $type необязательно null
Строка типа или массив с форматом ['type' => 'viewClass'] для сопоставления одного или нескольких
массив|null $viewClass необязательно null
Класс представления, который будет использоваться для типа без View в конце

Возвращает

массив|строка
Возвращает viewClass, когда задан только строковый параметр $type, в противном случае массив с viewClassMap

Методы, унаследованные от Cake\Controller\Component

__debugInfo()source public

__debugInfo( )

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

Возвращает

массив

__get()source public

__get( string $name )

Магический метод для леничной загрузки $components.

Параметры

строка $name
Имя компонента для получения.

Возвращает

смешанное
Объект компонента или null.

Методы, используемые из Cake\Core\InstanceConfigTrait

_configDelete()source protected

_configDelete( string $key )

Удаляет один ключ конфигурации

Параметры

строка $key
Ключ для удаления.

Выбрасывает

Cake\Core\Exception\Exception
если попытка перезаписать существующую конфигурацию

_configRead()source protected

_configRead( string|null $key )

Чтение переменной конфигурации

Параметры

строка|null $key
Ключ для чтения.

Возвращает

смешанное

_configWrite()source protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Запись переменной конфигурации

Параметры

строка|массив $key
Ключ для записи.
смешанное $value
Значение для записи.
boolean|строка $merge необязательно false

True для рекурсивной склейки, 'shallow' для простой склейки, false для перезаписи, по умолчанию false.

Выбрасывает

Cake\Core\Exception\Exception
если попытка перезаписи существующей конфигурации

config()source public

config( string|array|null $key null , mixed|null $value null , boolean $merge true )

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

Чтение всей конфигурации:

$this->config();

Чтение определенного значения:

$this->config('key');

Чтение вложенного значения:

$this->config('some.nested.key');

Установка определенного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив|null $key необязательно null
Ключ для получения/установки или полный массив конфигураций.
смешанное|null $value необязательно null
Значение для установки.
boolean $merge необязательно true
Выполнять ли рекурсивную склейку или перезапись существующей конфигурации, по умолчанию true.

Возвращает

смешанное
Значение конфигурации, которое считывается, или сам объект при операциях записи.

Выбрасывает

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

configShallow()source public

configShallow( string|array $key , mixed|null $value null )

Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которое выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.

Установка определенного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки или полный массив конфигураций.
смешанное|null $value необязательно null
Значение для установки.

Возвращает


$this Объект самого себя.

Методы, используемые из Cake\Log\LogTrait

log()source public

log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )

Удобный метод для записи сообщения в журнал. Для получения дополнительной информации о записи в журнал см. Log::write().

Параметры

смешанный $msg
Сообщение журнала.
целое число или строка $level необязательно LogLevel::ERROR
Уровень ошибки.
строка или массив $context необязательно []
Дополнительные данные журнала, относящиеся к этому сообщению.

Возвращаемые значения

boolean
Успешность записи в журнал.

Подробное описание свойств

$_defaultConfigsource

protected массив

Настройка по умолчанию

Эти настройки объединяются с настройками, предоставленными пользователем, при использовании компонента.

  • checkHttpCache - Нужно ли проверять кэш HTTP.
  • viewClassMap - Сопоставление между типом и классами представлений. Если не определено, json, xml и ajax будут сопоставлены. Определение любых типов приведет к пропусканию значений по умолчанию.
  • inputTypeMap - Сопоставление между типами и десериализаторами для тел запросов. Если не определено, json и xml будут сопоставлены. Определение любых типов приведет к пропусканию значений по умолчанию.
[
    'checkHttpCache' => true,
    'viewClassMap' => [],
    'inputTypeMap' => []
]

$_renderTypesource

protected строка

Шаблон, используемый при рендеринге заданного типа контента.

null

$enabledsource

public булево

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

true

$extsource

public строка

Содержит расширение файла, разобранное маршрутизатором.

См. также

\Cake\Routing\Router::extensions()
null

$responsesource

public Cake\Network\Response

Содержит ссылку на Controller::$response

© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.2/class-Cake.Controller.Component.RequestHandlerComponent.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API