How to Register a new Request Format and Mime Type
Edit this pageWarning: You are browsing the documentation for Symfony 2.5, which is no longer maintained.
Read the updated version of this page for Symfony 6.3 (the current stable version).
How to Register a new Request Format and Mime Type
Every Request
has a "format" (e.g. html
, json
), which is used
to determine what type of content to return in the Response
. In fact,
the request format, accessible via
getRequestFormat(),
is used to set the MIME type of the Content-Type
header on the Response
object. Internally, Symfony contains a map of the most common formats (e.g.
html
, json
) and their associated MIME types (e.g. text/html
,
application/json
). Of course, additional format-MIME type entries can
easily be added. This document will show how you can add the jsonp
format
and corresponding MIME type.
2.5
The possibility to configure request formats was introduced in Symfony 2.5.
Configure your New Format
The FrameworkBundle registers a subscriber that will add formats to incoming requests.
All you have to do is to configure the jsonp
format:
1 2 3 4 5
# app/config/config.yml
framework:
request:
formats:
jsonp: 'application/javascript'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
>
<framework:config>
<framework:request>
<framework:format name="jsonp">
<framework:mime-type>application/javascript</framework:mime-type>
</framework:format>
</framework:request>
</framework:config>
</container>
1 2 3 4 5 6 7 8
// app/config/config.php
$container->loadFromExtension('framework', array(
'request' => array(
'formats' => array(
'jsonp' => 'application/javascript',
),
),
));
Tip
You can also associate multiple mime types to a format, but please note that the preferred one must be the first as it will be used as the content type:
1 2 3 4 5
# app/config/config.yml
framework:
request:
formats:
csv: ['text/csv', 'text/plain']
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
>
<framework:config>
<framework:request>
<framework:format name="csv">
<framework:mime-type>text/csv</framework:mime-type>
<framework:mime-type>text/plain</framework:mime-type>
</framework:format>
</framework:request>
</framework:config>
</container>
1 2 3 4 5 6 7 8 9 10 11
// app/config/config.php
$container->loadFromExtension('framework', array(
'request' => array(
'formats' => array(
'jsonp' => array(
'text/csv',
'text/plain',
),
),
),
));