[2.2] add http_method_override option to ease setup

This commit is contained in:
Toni Uebernickel 2013-02-27 14:12:14 +01:00 committed by Fabien Potencier
parent 6c966c7565
commit 817453cff5
9 changed files with 22 additions and 1 deletions

View File

@ -52,6 +52,10 @@ class Configuration implements ConfigurationInterface
->end()
->end()
->scalarNode('secret')->end()
->scalarNode('http_method_override')
->info("Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests.")
->defaultTrue()
->end()
->scalarNode('trust_proxy_headers')->defaultFalse()->end() // @deprecated, to be removed in 2.3
->arrayNode('trusted_proxies')
->beforeNormalization()

View File

@ -66,6 +66,8 @@ class FrameworkExtension extends Extension
$container->setParameter('kernel.secret', $config['secret']);
}
$container->setParameter('kernel.http_method_override', $config['http_method_override']);
$container->setParameter('kernel.trusted_proxies', $config['trusted_proxies']);
// @deprecated, to be removed in 2.3

View File

@ -46,6 +46,10 @@ class FrameworkBundle extends Bundle
} elseif ($this->container->getParameter('kernel.trust_proxy_headers')) {
Request::trustProxyData(); // @deprecated, to be removed in 2.3
}
if ($this->container->getParameter('kernel.http_method_override')) {
Request::enableHttpMethodParameterOverride();
}
}
public function build(ContainerBuilder $container)

View File

@ -24,6 +24,7 @@
<!-- charset is deprecated and will be removed in 2.2 -->
<xsd:attribute name="charset" type="xsd:string" />
<xsd:attribute name="http-method-override" type="xsd:boolean" />
<xsd:attribute name="trust-proxy-headers" type="xsd:string" />
<xsd:attribute name="trusted-proxies" type="xsd:string" />
<xsd:attribute name="ide" type="xsd:string" />

View File

@ -88,6 +88,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
{
return array(
'charset' => null,
'http_method_override' => true,
'trust_proxy_headers' => false,
'trusted_proxies' => array(),
'ide' => null,

View File

@ -4,6 +4,7 @@ $container->loadFromExtension('framework', array(
'secret' => 's3cr3t',
'default_locale' => 'fr',
'form' => null,
'http_method_override' => false,
'trust_proxy_headers' => true,
'trusted_proxies' => array('127.0.0.1', '10.0.0.1'),
'csrf_protection' => array(

View File

@ -6,7 +6,7 @@
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 secret="s3cr3t" ide="file%%link%%format" default-locale="fr" trust-proxy-headers="true" trusted-proxies="127.0.0.1, 10.0.0.1">
<framework:config secret="s3cr3t" ide="file%%link%%format" default-locale="fr" trust-proxy-headers="true" trusted-proxies="127.0.0.1, 10.0.0.1" http-method-override="false">
<framework:csrf-protection enabled="true" field-name="_csrf" />
<framework:form />
<framework:esi enabled="true" />

View File

@ -2,6 +2,7 @@ framework:
secret: s3cr3t
default_locale: fr
form: ~
http_method_override: false
trust_proxy_headers: true
trusted_proxies: ['127.0.0.1', '10.0.0.1']
csrf_protection:

View File

@ -41,6 +41,13 @@ abstract class FrameworkExtensionTest extends TestCase
$this->assertEquals(array('127.0.0.1', '10.0.0.1'), $container->getParameter('kernel.trusted_proxies'));
}
public function testHttpMethodOverride()
{
$container = $this->createContainerFromFile('full');
$this->assertFalse($container->getParameter('kernel.http_method_override'));
}
public function testEsi()
{
$container = $this->createContainerFromFile('full');