Skip to content

Commit cb35620

Browse files
Merge branch '3.4'
* 3.4: [HttpFoundation] refactoring: calculate when need [Serializer] Fix extra attributes when no group specified [Intl] Make intl-data tests pass and save language aliases again [FrameworkBundle][Config] fix: do not add resource checkers for debug=false [DI] Fix "almost-circular" dependencies handling [Console] Fix CommandTester::setInputs() docblock Only enabling validation if it is present Fix displaying errors for bootstrap 4 [Serializer] readd default argument value Fix reference dump for deprecated nodes [PhpUnitBridge] Fixed fatal error in CoverageListener when something goes wrong in Test::setUpBeforeClass [HttpKernel] Let the storage manage the session starts [VarDumper] fix trailling comma when dumping an exception [Validator] Fix TraceableValidator is reset on data collector instantiation Remove useless docblocks [FrameworkBundle] Fix docblocks [PropertyInfo] Remove useless docblocks
2 parents bde4241 + 2a4432d commit cb35620

File tree

5 files changed

+48
-104
lines changed

5 files changed

+48
-104
lines changed

Controller/ControllerTrait.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\Controller;
1313

14+
use Doctrine\Common\Persistence\ManagerRegistry;
1415
use Psr\Container\ContainerInterface;
1516
use Symfony\Component\HttpFoundation\BinaryFileResponse;
1617
use Symfony\Component\HttpFoundation\JsonResponse;
@@ -23,10 +24,9 @@
2324
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
2425
use Symfony\Component\Security\Csrf\CsrfToken;
2526
use Symfony\Component\Form\Extension\Core\Type\FormType;
26-
use Symfony\Component\Form\Form;
27-
use Symfony\Component\Form\FormBuilder;
27+
use Symfony\Component\Form\FormInterface;
28+
use Symfony\Component\Form\FormBuilderInterface;
2829
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
29-
use Doctrine\Bundle\DoctrineBundle\Registry;
3030

3131
/**
3232
* Common features needed in controllers.
@@ -71,7 +71,7 @@ protected function get($id)
7171
* Generates a URL from the given parameters.
7272
*
7373
* @param string $route The name of the route
74-
* @param mixed $parameters An array of parameters
74+
* @param array $parameters An array of parameters
7575
* @param int $referenceType The type of reference (one of the constants in UrlGeneratorInterface)
7676
*
7777
* @return string The generated URL
@@ -380,7 +380,7 @@ protected function createAccessDeniedException($message = 'Access Denied.', \Exc
380380
* @param mixed $data The initial data for the form
381381
* @param array $options Options for the form
382382
*
383-
* @return Form
383+
* @return FormInterface
384384
*
385385
* @final since version 3.4
386386
*/
@@ -395,7 +395,7 @@ protected function createForm($type, $data = null, array $options = array())
395395
* @param mixed $data The initial data for the form
396396
* @param array $options Options for the form
397397
*
398-
* @return FormBuilder
398+
* @return FormBuilderInterface
399399
*
400400
* @final since version 3.4
401401
*/
@@ -407,7 +407,7 @@ protected function createFormBuilder($data = null, array $options = array())
407407
/**
408408
* Shortcut to return the Doctrine Registry service.
409409
*
410-
* @return Registry
410+
* @return ManagerRegistry
411411
*
412412
* @throws \LogicException If DoctrineBundle is not available
413413
*

DependencyInjection/FrameworkExtension.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,10 @@ public function load(array $configs, ContainerBuilder $container)
193193
if ($this->isConfigEnabled($container, $config['form'])) {
194194
$this->formConfigEnabled = true;
195195
$this->registerFormConfiguration($config, $container, $loader);
196-
$config['validation']['enabled'] = true;
197196

198-
if (!class_exists('Symfony\Component\Validator\Validation')) {
197+
if (class_exists('Symfony\Component\Validator\Validation')) {
198+
$config['validation']['enabled'] = true;
199+
} else {
199200
$container->setParameter('validator.translation_domain', 'validators');
200201

201202
$container->removeDefinition('form.type_extension.form.validator');
@@ -312,6 +313,11 @@ public function load(array $configs, ContainerBuilder $container)
312313
->addTag('validator.constraint_validator');
313314
$container->registerForAutoconfiguration(ObjectInitializerInterface::class)
314315
->addTag('validator.initializer');
316+
317+
if (!$container->getParameter('kernel.debug')) {
318+
// remove tagged iterator argument for resource checkers
319+
$container->getDefinition('config_cache_factory')->setArguments(array());
320+
}
315321
}
316322

317323
/**

Resources/config/validator_debug.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
<service id="debug.validator" decorates="validator" decoration-priority="255" class="Symfony\Component\Validator\Validator\TraceableValidator">
1111
<argument type="service" id="debug.validator.inner" />
12+
<tag name="kernel.reset" method="reset" />
1213
</service>
1314

1415
<!-- DataCollector -->

Tests/Controller/ControllerTraitTest.php

Lines changed: 21 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Tests\Controller;
1313

1414
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
15+
use Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait;
1516
use Symfony\Component\DependencyInjection\Container;
1617
use Symfony\Component\HttpFoundation\BinaryFileResponse;
1718
use Symfony\Component\HttpFoundation\File\File;
@@ -21,8 +22,6 @@
2122
use Symfony\Component\HttpFoundation\Response;
2223
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
2324
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
24-
use Symfony\Component\HttpFoundation\StreamedResponse;
25-
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
2625
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
2726
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
2827
use Symfony\Component\Security\Core\User\User;
@@ -533,98 +532,25 @@ public function testGetDoctrine()
533532

534533
trait TestControllerTrait
535534
{
536-
public function generateUrl($route, $parameters = array(), $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
537-
{
538-
return parent::generateUrl($route, $parameters, $referenceType);
539-
}
540-
541-
public function redirect($url, $status = 302)
542-
{
543-
return parent::redirect($url, $status);
544-
}
545-
546-
public function forward($controller, array $path = array(), array $query = array())
547-
{
548-
return parent::forward($controller, $path, $query);
549-
}
550-
551-
public function getUser()
552-
{
553-
return parent::getUser();
554-
}
555-
556-
public function json($data, $status = 200, $headers = array(), $context = array())
557-
{
558-
return parent::json($data, $status, $headers, $context);
559-
}
560-
561-
public function file($file, $fileName = null, $disposition = ResponseHeaderBag::DISPOSITION_ATTACHMENT)
562-
{
563-
return parent::file($file, $fileName, $disposition);
564-
}
565-
566-
public function isGranted($attributes, $object = null)
567-
{
568-
return parent::isGranted($attributes, $object);
569-
}
570-
571-
public function denyAccessUnlessGranted($attributes, $object = null, $message = 'Access Denied.')
572-
{
573-
parent::denyAccessUnlessGranted($attributes, $object, $message);
574-
}
575-
576-
public function redirectToRoute($route, array $parameters = array(), $status = 302)
577-
{
578-
return parent::redirectToRoute($route, $parameters, $status);
579-
}
580-
581-
public function addFlash($type, $message)
582-
{
583-
parent::addFlash($type, $message);
584-
}
585-
586-
public function isCsrfTokenValid($id, $token)
587-
{
588-
return parent::isCsrfTokenValid($id, $token);
589-
}
590-
591-
public function renderView($view, array $parameters = array())
592-
{
593-
return parent::renderView($view, $parameters);
594-
}
595-
596-
public function render($view, array $parameters = array(), Response $response = null)
597-
{
598-
return parent::render($view, $parameters, $response);
599-
}
600-
601-
public function stream($view, array $parameters = array(), StreamedResponse $response = null)
602-
{
603-
return parent::stream($view, $parameters, $response);
604-
}
605-
606-
public function createNotFoundException($message = 'Not Found', \Exception $previous = null)
607-
{
608-
return parent::createNotFoundException($message, $previous);
609-
}
610-
611-
public function createAccessDeniedException($message = 'Access Denied.', \Exception $previous = null)
612-
{
613-
return parent::createAccessDeniedException($message, $previous);
614-
}
615-
616-
public function createForm($type, $data = null, array $options = array())
617-
{
618-
return parent::createForm($type, $data, $options);
619-
}
620-
621-
public function createFormBuilder($data = null, array $options = array())
622-
{
623-
return parent::createFormBuilder($data, $options);
624-
}
625-
626-
public function getDoctrine()
627-
{
628-
return parent::getDoctrine();
535+
use ControllerTrait {
536+
generateUrl as public;
537+
redirect as public;
538+
forward as public;
539+
getUser as public;
540+
json as public;
541+
file as public;
542+
isGranted as public;
543+
denyAccessUnlessGranted as public;
544+
redirectToRoute as public;
545+
addFlash as public;
546+
isCsrfTokenValid as public;
547+
renderView as public;
548+
render as public;
549+
stream as public;
550+
createNotFoundException as public;
551+
createAccessDeniedException as public;
552+
createForm as public;
553+
createFormBuilder as public;
554+
getDoctrine as public;
629555
}
630556
}

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,17 @@ public function testCachePoolServices()
966966
$this->assertCachePoolServiceDefinitionIsCreated($container, 'cache.def', 'cache.app', 11);
967967
}
968968

969+
public function testRemovesResourceCheckerConfigCacheFactoryArgumentOnlyIfNoDebug()
970+
{
971+
$container = $this->createContainer(array('kernel.debug' => true));
972+
(new FrameworkExtension())->load(array(), $container);
973+
$this->assertCount(1, $container->getDefinition('config_cache_factory')->getArguments());
974+
975+
$container = $this->createContainer(array('kernel.debug' => false));
976+
(new FrameworkExtension())->load(array(), $container);
977+
$this->assertEmpty($container->getDefinition('config_cache_factory')->getArguments());
978+
}
979+
969980
protected function createContainer(array $data = array())
970981
{
971982
return new ContainerBuilder(new ParameterBag(array_merge(array(

0 commit comments

Comments
 (0)