Spec-Zone.ru › CakePHP 2.7

Класс RequestHandlerComponent

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

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

Объект
Extended by Компонент
Extended by RequestHandlerComponent
Пакет: Cake\Контроллер\Компонент
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
Ссылка: http://book.cakephp.org/2.0/ru/core-libraries/components/request-handling.html
Расположен в Cake/Controller/Component/RequestHandlerComponent.php

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

__constructsource public

__construct( ComponentCollection $collection , array $settings array() )

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

Параметры

ComponentCollection $collection
Объект ComponentCollection.
массив $settings необязательно array()
Массив настроек.

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

Component::__construct()

_setExtensionsource protected

_setExtension( )

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

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

acceptssource public

accepts( string|array $type null )

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

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

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

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

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

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

Параметры

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

Возвращает

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

См. также

RequestHandlerComponent::setContent()

addInputTypesource public

addInputType( string $type , array $handler )

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

Параметры

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

Выбрасывает

CakeException
CakeException

beforeRedirectsource public

beforeRedirect( Controller $controller , string|array $url , integer|array $status null , boolean $exit true )

Обрабатывает (имитирует) перенаправления для Ajax-запросов с помощью requestAction(). Изменяет $_POST и $_SERVER['REQUEST_METHOD'] для имитации нового запроса GET.

Параметры

Controller $controller
Ссылка на контроллер
строка|массив $url
Строка или массив, содержащие место перенаправления
целое число|массив $status необязательно null
HTTP-статус перенаправления
boolean $exit необязательно true
Выход из скрипта, по умолчанию true.

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

Component::beforeRedirect()

beforeRendersource public

beforeRender( Controller $controller )

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

Параметры

Controller $controller
Экземпляр контроллера.

Возвращает

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

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

Component::beforeRender()

convertXmlsource public

convertXml( string $xml )

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

Параметры

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

Возвращает

array
Данные массива Xml

getAjaxVersionsource public

getAjaxVersion( )

Получает версию Prototype, если вызов является Ajax, в противном случае пустая строка. Библиотека Prototype устанавливает специальный заголовок HTTP «Версия Prototype».

Возвращает

string|boolean
Если Ajax, версия prototype компонента, вызвавшего метод, в противном случае false

getClientIPsource public

getClientIP( boolean $safe true )

Получает удаленный IP-адрес клиента

Устарело

3.0.0 Используйте $this->request->clientIp() из вашего контроллера вместо этого.

Параметры

boolean $safe необязательно true
Используйте safe = false, если вы считаете, что пользователь может изменить заголовок HTTP_CLIENT_IP. Установка $safe = false также проверит HTTP_X_FORWARDED_FOR

Возвращает

string
IP-адрес клиента

getReferersource public

getReferer( )

Получает имя сервера, с которого был получен этот запрос

Устарело

3.0.0 Используйте $this->request->referer() из вашего контроллера вместо этого.

Возвращает

string
Адрес сервера

initializesource public

initialize( Controller $controller )

Проверяет, было ли расширение файла обработано маршрутизатором, или если HTTP_ACCEPT_TYPE соответствует только одному типу контента с поддерживаемыми расширениями. Если существует только один соответствующий тип между поддерживаемыми типами контента и расширениями, а также запрошенными MIME-типами, RequestHandler::$ext устанавливается в это значение.

Параметры

Controller $controller
Ссылка на контроллер

См. также

Router::parseExtensions()

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

Component::initialize()

isAjaxsource public

isAjax( )

Возвращает true, если текущий HTTP-запрос является Ajax, в противном случае false

Устарело

3.0.0 Используйте $this->request->is('ajax') вместо этого.

Возвращает

boolean
True, если вызов является Ajax

isAtomsource public

isAtom( )

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

Возвращает

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

isDeletesource public

isDelete( )

Возвращает true, если текущий вызов — запрос DELETE

Устарело

3.0.0 Используйте $this->request->is('delete'); из вашего контроллера.

Возвращает

boolean
True, если вызов — DELETE

isFlashsource public

isFlash( )

Возвращает true, если текущий HTTP-запрос поступает от клиента на основе Flash

Устарело

3.0.0 Используйте $this->request->is('flash') вместо этого.

Возвращает

boolean
True, если вызов от Flash

isGetsource public

isGet( )

Возвращает true, если текущий вызов — запрос GET

Устарело

3.0.0 Используйте $this->request->is('get'); из вашего контроллера.

Возвращает

boolean
True, если вызов — GET

isMobilesource public

isMobile( )

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

Возвращает

boolean
True, если user agent — мобильный веб-браузер

isPostsource public

isPost( )

Возвращает true, если текущий вызов — запрос POST

Устарело

3.0.0 Используйте $this->request->is('post'); из вашего контроллера.

Возвращает

boolean
True, если вызов — POST

isPutsource public

isPut( )

Возвращает true, если текущий вызов — запрос PUT

Устарело

3.0.0 Используйте $this->request->is('put'); из вашего контроллера.

Возвращает

boolean
True, если вызов — PUT

isRsssource public

isRss( )

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

Возвращает

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

isSSLsource public

isSSL( )

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

Устарело

3.0.0 Используйте $this->request->is('ssl') вместо этого.

Возвращает

boolean
True, если вызов выполняется через HTTPS

isWapsource public

isWap( )

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

Возвращает

boolean
bool

isXmlsource public

isXml( )

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

Возвращает

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

mapAliassource public

mapAlias( string|array $alias )

Преобразует псевдоним типа контента в MIME-тип(ы)

Параметры

строка|массив $alias
Псевдоним типа контента для преобразования в тип содержимого. Или массив псевдонимов для преобразования.

Возвращает

string|null
Null при неопределенном псевдониме. Строковое значение сопоставленного типа псевдонима. Если псевдоним сопоставляется с несколькими типами содержимого, будет возвращен первый.

mapTypesource public

mapType( string|array $cType )

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

Устарело

3.0.0 Используйте $this->response->mapType() в вашем контроллере вместо этого.

Параметры

строка|массив $cType
Тип содержимого для сопоставления (строка) или массив типов.

Возвращает

string|array
Псевдонимы для указанных типов.

preferssource public

prefers( string|array $type null )

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

Параметры

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

Возвращает

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

См. также

RequestHandlerComponent::setContent()

renderAssource public

renderAs( Controller $controller , string $type , array $options array() )

Устанавливает макет и пути шаблонов для типа содержимого, определённого $type.

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

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

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

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

$this->RequestHandler->renderAs($this, 'xml', array('attachment' => 'myfile.xml');

Параметры

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

См. также

RequestHandlerComponent::setContent()
RequestHandlerComponent::respondAs()

requestedWithsource public

requestedWith( string|array $type null )

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

Параметры

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

Возвращает

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

respondAssource public

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

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

Параметры

строка|массив $type
Дружественное имя типа, например, «html» или «xml», или полный тип содержимого, например, «application/x-shockwave».
массив $options необязательно массив()
Если $type — дружественное имя типа, связанное с несколькими типами содержимого, $index используется для выбора типа содержимого для использования.

Возвращает

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

См. также

RequestHandlerComponent::setContent()

responseTypesource public

responseType( )

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

Возвращает

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

setContentsource public

setContent( string $name , string|array $type null )

Добавляет/устанавливает тип(ы) содержимого для данного имени. Этот метод позволяет сопоставлять типы содержимого с дружественными псевдонимами (или расширениями), что позволяет RequestHandler автоматически отвечать на запросы этого типа в методе startup.

Устаревший

3.0.0 Используйте $this->response->type() вместо этого.

Параметры

строка $name
Имя типа содержимого, например, "html", "xml", "css"
строка|массив $type необязательно null
Тип содержимого или массив типов содержимого, назначенных имени, например, "text/html" или "application/xml"

startupsource public

startup( Controller $controller )

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

  • Отключение рендеринга макета для Ajax-запросов (на основе заголовка HTTP_X_REQUESTED_WITH)
  • Если Router::parseExtensions() включен, тип макета и шаблона переключаются на основе проаналированного расширения или заголовка Accept-Type. Например, если запрашивается controller/action.xml, путь к представлению становится app/View/Controller/xml/action.ctp. Также, если запрашивается controller/action с Accept-Type: application/xml в заголовках, путь к представлению станет app/View/Controller/xml/action.ctp. Типы макета и шаблона будут переключаться только на типы MIME, распознаваемые CakeResponse. Если вам нужно объявить дополнительные типы MIME, вы можете сделать это с помощью CakeResponse::type() в методе beforeFilter() своих контроллеров.
  • Если существует помощник с тем же именем, что и расширение, он добавляется в контроллер.
  • Если расширение является типом, понятным RequestHandler, он установит этот тип содержимого в заголовке ответа.
  • Если XML-данные отправляются с помощью POST, данные анализируются в XML-объект, который назначается свойству $data контроллера, которое затем может быть сохранено в объект модели.

Параметры

Controller $controller
Ссылка на контроллер

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

Component::startup()

viewClassMapsource public

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

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

Параметры

массив|строка $type необязательно null
Строка типа или массив с форматом array('type' => 'viewClass') для сопоставления одного или нескольких
массив $viewClass необязательно null
Представление класса, используемое для типа без добавления View

Возвращает

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

Наследованные методы из Component

__getsource public

__get( string $name )

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

Параметры

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

Возвращает

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

shutdownsource public

shutdown( Controller $controller )

Вызывается после Controller::render() и перед выводом на экран браузера.

Параметры

Controller $controller
Контроллер с компонентами для завершения работы

Ссылка

http://book.cakephp.org/2.0/en/controllers/components.html#Component::shutdown

Наследованные методы из Object

_mergeVarssource protected

_mergeVars( array $properties , string $class , boolean $normalize true )

Объединяет $property этого объекта со свойством в определении $class. Значение этого класса для свойства будет объединено поверх $class'

Это обеспечивает некоторую часть DRY-магии CakePHP. Если вы хотите отключить её, переопределите этот метод как пустую функцию.

Параметры

массив $properties
Имя свойств для объединения.
строка $class
Класс для объединения свойства с.
булево $normalize необязательно true
Установите в значение true, чтобы запустить свойства через Hash::normalize() перед объединением.

_setsource protected

_set( array $properties array() )

Позволяет задавать несколько свойств объекта в одной строке кода. Будут установлены только свойства, являющиеся частью объявления класса.

Параметры

массив $properties необязательно array()
Ассоциативный массив, содержащий свойства и соответствующие значения.

_stopsource protected

_stop( integer|string $status 0 )

Останавливает выполнение текущего скрипта. Оборачивает exit(), что упрощает тестирование.

Параметры

целое число|строка $status необязательно 0
см. http://php.net/exit для значений

dispatchMethodsource public

dispatchMethod( string $method , array $params array() )

Вызывает метод этого объекта с заданными параметрами. Предоставляет ОО-обёртку для call_user_func_array

Параметры

строка $method
Имя вызываемого метода
массив $params необязательно array()
Список параметров для использования при вызове $method

Возвращает

mixed
Возвращает результат вызова метода

logsource public

log( string $msg , integer $type LOG_ERR , null|string|array $scope null )

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

Параметры

строка $msg
Сообщение журнала
целое число $type необязательно LOG_ERR
Константа типа ошибки. Определена в app/Config/core.php.
null|строка|массив $scope необязательно null
Область(и), в которой создаётся сообщение журнала. См. CakeLog::config() для получения дополнительной информации о пространствах имён журнала.

Возвращает

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

requestActionsource public

requestAction( string|array $url , array $extra array() )

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

Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строковый URL. Вы должны использовать форматы URL, совместимые с Router::reverse()

Передача данных POST и GET

Данные POST и GET могут быть смоделированы в requestAction. Используйте $extra['url'] для данных GET. Параметр $extra['data'] позволяет смоделировать данные POST.

Параметры

строка|массив $url
Строковый или массивно-основанный URL. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные и именованные аргументы в параметре $url.
массив $extra необязательно array()
Если массив включает ключ "return", он устанавливает AutoRender в true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.

Возвращает

mixed
Булевое значение true или false при успехе/неудаче или содержимое рендерного действия, если 'return' установлен в $extra.

toStringsource public

toString( )

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

Возвращает

string
Имя этого класса

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

$_inputTypeMapsource

protected array

Сопоставление расширений и десериализаторов для тел запросов данного типа. По умолчанию сопоставляются только JSON и XML, используйте RequestHandlerComponent::addInputType()

array(
    'json' => array('json_decode', true)
)

$_renderTypesource

protected string

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

null

$_viewClassMapsource

protected array

Сопоставление типа и viewClass. По умолчанию сопоставляются только JSON и XML, используйте RequestHandlerComponent::viewClassMap()

array(
    'json' => 'Json',
    'xml' => 'Xml'
)

$ajaxLayoutsource

public string

Макет, который будет переключён для Ajax-запросов

См. также

RequestHandler::setAjax()
'ajax'

$enabledsource

public boolean

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

true

$extsource

public string

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

См. также

Router::parseExtensions()
null

$requestsource

public CakeRequest

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

$responsesource

public CakeResponse

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

Свойства, унаследованные от Component

$_Collectionsource

protected ComponentCollection

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

$_componentMapsource

protected array

Таблица поиска компонентов, используемая для ленивой загрузки объектов компонентов.

array()

$componentssource

public array

Другие компоненты, используемые этим компонентом.

array()

$settingssource

public array

Настройки для этого компонента

array()

© 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/2.7/class-RequestHandlerComponent.html

Spec-Zone.ru

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