Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdcf8e6e

Browse files
committed
feature#3402 Added documentation about new requests formats configuration (gquemener)
This PR was merged into the master branch.Discussion----------Added documentation about new requests formats configuration| Q | A| ------------- | ---| Doc fix? | no| New docs? | yes (symfony/symfony#9862)| Applies to | 2.5| Fixed tickets |symfony/symfony#8934Commits-------6adf160 Added documentation about new requests formats configuration
2 parents842fd30 +6adf160 commitdcf8e6e

File tree

1 file changed

+81
-55
lines changed

1 file changed

+81
-55
lines changed

‎cookbook/request/mime_type.rst‎

Lines changed: 81 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -15,81 +15,107 @@ object. Internally, Symfony contains a map of the most common formats (e.g.
1515
easily be added. This document will show how you can add the ``jsonp`` format
1616
and corresponding MIME type.
1717

18-
Create a ``kernel.request`` Listener
19-
-------------------------------------
18+
..versionadded::2.5
19+
The possibility to configure request formats was introduced in Symfony 2.5.
2020

21-
The key to defining a new MIME type is to create a class that will "listen" to
22-
the ``kernel.request`` event dispatched by the Symfony kernel. The
23-
``kernel.request`` event is dispatched early in Symfony's request handling
24-
process and allows you to modify the request object.
25-
26-
Create the following class, replacing the path with a path to a bundle in your
27-
project::
28-
29-
// src/Acme/DemoBundle/RequestListener.php
30-
namespace Acme\DemoBundle;
31-
32-
use Symfony\Component\HttpKernel\HttpKernelInterface;
33-
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
34-
35-
class RequestListener
36-
{
37-
public function onKernelRequest(GetResponseEvent $event)
38-
{
39-
$event->getRequest()->setFormat('jsonp', 'application/javascript');
40-
}
41-
}
42-
43-
Registering your Listener
21+
Configure your New Format
4422
-------------------------
4523

46-
As with any other listener, you need to add it in one of your configuration
47-
files and register it as a listener by adding the ``kernel.event_listener`` tag:
24+
The FrameworkBundle registers a subscriber that will add formats to incomming requests.
25+
26+
All you have to do is to configure the ``jsonp`` format:
4827

4928
..configuration-block::
5029

5130
..code-block::yaml
5231
5332
# app/config/config.yml
54-
services:
55-
acme.demobundle.listener.request:
56-
class:Acme\DemoBundle\RequestListener
57-
tags:
58-
-{ name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
33+
framework:
34+
request:
35+
formats:
36+
jsonp:'application/javascript'
5937
6038
..code-block::xml
6139
6240
<!-- app/config/config.xml-->
63-
<?xml version="1.0" ?>
41+
<?xml version="1.0" encoding="UTF-8" ?>
42+
6443
<containerxmlns="http://symfony.com/schema/dic/services"
6544
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
66-
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
67-
<services>
68-
<serviceid="acme.demobundle.listener.request"
69-
class="Acme\DemoBundle\RequestListener">
70-
<tagname="kernel.event_listener"
71-
event="kernel.request"
72-
method="onKernelRequest"
73-
/>
74-
</service>
75-
</services>
45+
xmlns:framework="http://symfony.com/schema/dic/symfony"
46+
xsi:schemaLocation="http://symfony.com/schema/dic/services
47+
http://symfony.com/schema/dic/services/services-1.0.xsd
48+
http://symfony.com/schema/dic/symfony
49+
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
50+
>
51+
<framework:config>
52+
<framework:request>
53+
<framework:formatname="jsonp">
54+
<framework:mime-type>application/javascript</framework:mime-type>
55+
</framework:format>
56+
</framework:request>
57+
</framework:config>
7658
</container>
7759
7860
..code-block::php
7961
80-
# app/config/config.php
81-
$definition = new Definition('Acme\DemoBundle\RequestListener');
82-
$definition->addTag('kernel.event_listener', array(
83-
'event' => 'kernel.request',
84-
'method' => 'onKernelRequest',
62+
// app/config/config.php
63+
$container->loadFromExtension('framework', array(
64+
'request' => array(
65+
'formats' => array(
66+
'jsonp' => 'application/javascript',
67+
),
68+
),
8569
));
86-
$container->setDefinition('acme.demobundle.listener.request', $definition);
87-
88-
At this point, the ``acme.demobundle.listener.request`` service has been
89-
configured and will be notified when the Symfony kernel dispatches the
90-
``kernel.request`` event.
9170
9271
..tip::
9372

94-
You can also register the listener in a configuration extension class (see
95-
:ref:`service-container-extension-configuration` for more information).
73+
You can also associate multiple mime types to a format, but please note that
74+
the preferred one must be the first as it will be used as the content type:
75+
76+
..configuration-block::
77+
78+
..code-block::yaml
79+
80+
# app/config/config.yml
81+
framework:
82+
request:
83+
formats:
84+
csv:['text/csv', 'text/plain']
85+
86+
..code-block::xml
87+
88+
<!-- app/config/config.xml-->
89+
<?xml version="1.0" encoding="UTF-8" ?>
90+
91+
<containerxmlns="http://symfony.com/schema/dic/services"
92+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
93+
xmlns:framework="http://symfony.com/schema/dic/symfony"
94+
xsi:schemaLocation="http://symfony.com/schema/dic/services
95+
http://symfony.com/schema/dic/services/services-1.0.xsd
96+
http://symfony.com/schema/dic/symfony
97+
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
98+
>
99+
<framework:config>
100+
<framework:request>
101+
<framework:formatname="csv">
102+
<framework:mime-type>text/csv</framework:mime-type>
103+
<framework:mime-type>text/plain</framework:mime-type>
104+
</framework:format>
105+
</framework:request>
106+
</framework:config>
107+
</container>
108+
109+
..code-block::php
110+
111+
// app/config/config.php
112+
$container->loadFromExtension('framework', array(
113+
'request' => array(
114+
'formats' => array(
115+
'jsonp' => array(
116+
'text/csv',
117+
'text/plain',
118+
),
119+
),
120+
),
121+
));

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp