diff --git a/composer.json b/composer.json index c48d51732..83b3549da 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,4 @@ { - "minimum-stability": "dev", "name": "silex/silex", "description": "The PHP micro-framework based on the Symfony Components", "keywords": ["microframework"], @@ -62,5 +61,6 @@ "branch-alias": { "dev-master": "1.3.x-dev" } - } + }, + "minimum-stability": "dev" } diff --git a/src/Silex/Application/FormTrait.php b/src/Silex/Application/FormTrait.php index 4744c8031..145a03873 100644 --- a/src/Silex/Application/FormTrait.php +++ b/src/Silex/Application/FormTrait.php @@ -30,6 +30,12 @@ trait FormTrait */ public function form($data = null, array $options = array()) { - return $this['form.factory']->createBuilder('form', $data, $options); + $name = 'Symfony\Component\Form\Extension\Core\Type\FormType'; + // for BC with Symfony pre 2.7 + if (!class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType')) { + $name = 'form'; + } + + return $this['form.factory']->createBuilder($name, $data, $options); } } diff --git a/tests/Silex/Tests/Provider/FormServiceProviderTest.php b/tests/Silex/Tests/Provider/FormServiceProviderTest.php index b5771233a..76df05591 100644 --- a/tests/Silex/Tests/Provider/FormServiceProviderTest.php +++ b/tests/Silex/Tests/Provider/FormServiceProviderTest.php @@ -47,8 +47,8 @@ public function testFormServiceProviderWillLoadTypes() return $extensions; })); - $form = $app['form.factory']->createBuilder('form', array()) - ->add('dummy', 'dummy') + $form = $app['form.factory']->createBuilder(class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\FormType' : 'form', array()) + ->add('dummy', class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Silex\Tests\Provider\DummyFormType' : 'dummy') ->getForm(); $this->assertInstanceOf('Symfony\Component\Form\Form', $form); @@ -66,8 +66,8 @@ public function testFormServiceProviderWillLoadTypeExtensions() return $extensions; })); - $form = $app['form.factory']->createBuilder('form', array()) - ->add('file', 'file', array('image_path' => 'webPath')) + $form = $app['form.factory']->createBuilder(class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\FormType' : 'form', array()) + ->add('file', class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\FileType' : 'file', array('image_path' => 'webPath')) ->getForm(); $this->assertInstanceOf('Symfony\Component\Form\Form', $form); @@ -107,7 +107,7 @@ public function testFormServiceProviderWillUseTranslatorIfAvailable() return new FakeCsrfProvider(); }); - $form = $app['form.factory']->createBuilder('form', array()) + $form = $app['form.factory']->createBuilder(class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\FormType' : 'form', array()) ->getForm(); $form->handleRequest($req = Request::create('/', 'POST', array('form' => array( @@ -147,14 +147,20 @@ public function testFormServiceProviderWillNotAddNonexistentTranslationFiles() } } -class DummyFormType extends AbstractType -{ - /** - * @return string The name of this type - */ - public function getName() +if (class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType')) { + class DummyFormType extends AbstractType + { + } +} else { + class DummyFormType extends AbstractType { - return 'dummy'; + /** + * @return string The name of this type + */ + public function getName() + { + return 'dummy'; + } } } @@ -163,7 +169,7 @@ class DummyFormTypeExtension extends AbstractTypeExtension { public function getExtendedType() { - return 'file'; + return class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\FileType' : 'file'; } public function configureOptions(OptionsResolver $resolver) @@ -176,7 +182,7 @@ class DummyFormTypeExtension extends AbstractTypeExtension { public function getExtendedType() { - return 'file'; + return class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\FileType' : 'file'; } public function setDefaultOptions(OptionsResolverInterface $resolver) diff --git a/tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php b/tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php index 90389b6a0..b4bf94290 100644 --- a/tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php +++ b/tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php @@ -88,7 +88,7 @@ public function testValidatorServiceIsAValidator($app) /** * @depends testRegister - * @dataProvider testValidatorConstraintProvider + * @dataProvider getTestValidatorConstraintProvider */ public function testValidatorConstraint($email, $isValid, $nbGlobalError, $nbEmailError, $app) { @@ -102,13 +102,13 @@ public function testValidatorConstraint($email, $isValid, $nbGlobalError, $nbEma ), )); - $builder = $app['form.factory']->createBuilder('form', array(), array( + $builder = $app['form.factory']->createBuilder(class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\FormType' : 'form', array(), array( 'constraints' => $constraints, 'csrf_protection' => false, )); $form = $builder - ->add('email', 'email', array('label' => 'Email')) + ->add('email', class_exists('Symfony\Component\Form\Extension\Core\Type\RangeType') ? 'Symfony\Component\Form\Extension\Core\Type\EmailType' : 'email', array('label' => 'Email')) ->getForm() ; @@ -140,9 +140,9 @@ public function testValidatorWillNotAddNonexistentTranslationFiles() } } - public function testValidatorConstraintProvider() + public function getTestValidatorConstraintProvider() { - // Email, form is valid , nb global error, nb email error + // Email, form is valid, nb global error, nb email error return array( array('', false, 0, 1), array('not an email', false, 0, 1),