Skip to content

Commit

Permalink
Merge 672165c into 92a54f7
Browse files Browse the repository at this point in the history
  • Loading branch information
javiereguiluz committed Nov 9, 2015
2 parents 92a54f7 + 672165c commit 3313c0a
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 29 deletions.
5 changes: 3 additions & 2 deletions .travis.yml
Expand Up @@ -20,6 +20,7 @@ env:
- deps="no"
- SYMFONY_VERSION=""
- PHP_CS="no"
- SYMFONY_DEPRECATIONS_HELPER=weak

matrix:
fast_finish: true
Expand All @@ -31,9 +32,9 @@ matrix:
- php: 5.6
env: SYMFONY_VERSION=2.7.*
- php: 5.6
env: SYMFONY_VERSION=2.8.*@dev
env: SYMFONY_VERSION=2.8.*@dev SYMFONY_DEPRECATIONS_HELPER=strict
- php: 5.6
env: SYMFONY_VERSION="3.0.x-dev as 2.8"
env: SYMFONY_VERSION="3.0.x-dev as 2.8" SYMFONY_DEPRECATIONS_HELPER=strict
- php: 5.6
env: TWIG_VERSION="2.0.x-dev"
allow_failures:
Expand Down
3 changes: 2 additions & 1 deletion Form/Extension/EasyAdminExtension.php
Expand Up @@ -65,6 +65,7 @@ public function setRequest(Request $request = null)
*/
public function getExtendedType()
{
return 'form';
return class_exists('Symfony\Component\Form\Util\StringUtil')
? 'Symfony\Component\Form\Extension\Core\Type\FormType' : 'form';
}
}
44 changes: 39 additions & 5 deletions Form/Type/EasyAdminFormType.php
Expand Up @@ -86,7 +86,11 @@ public function buildForm(FormBuilderInterface $builder, array $options)
$formFieldOptions['attr']['field_css_class'] = $metadata['class'];
$formFieldOptions['attr']['field_help'] = $metadata['help'];

$builder->add($name, $metadata['fieldType'], $formFieldOptions);
if ($this->isLegacySymfonyForm()) {
$builder->add($name, $metadata['fieldType'], $formFieldOptions);
} else {
$builder->add($name, $this->getFullFormType($metadata['fieldType']), $formFieldOptions);
}
}
}

Expand All @@ -108,7 +112,10 @@ public function configureOptions(OptionsResolver $resolver)
return $entityConfig['class'];
},
))
->setNormalizers(array(
->setRequired(array('entity', 'view'));

if ($this->isLegacySymfonyForm()) {
$resolver->setNormalizers(array(
'attr' => function (Options $options, $value) use ($config) {
$formCssClass = array_reduce($config['design']['form_theme'], function ($previousClass, $formTheme) {
return sprintf('theme-%s %s', strtolower(str_replace('.html.twig', '', basename($formTheme))), $previousClass);
Expand All @@ -119,8 +126,19 @@ public function configureOptions(OptionsResolver $resolver)
'id' => $options['view'].'-form',
), $value);
},
))
->setRequired(array('entity', 'view'));
));
} else {
$resolver->setNormalizer('attr', function (Options $options, $value) use ($config) {
$formCssClass = array_reduce($config['design']['form_theme'], function ($previousClass, $formTheme) {
return sprintf('theme-%s %s', strtolower(str_replace('.html.twig', '', basename($formTheme))), $previousClass);
});

return array_replace_recursive(array(
'class' => $formCssClass,
'id' => $options['view'].'-form',
), $value);
});
}
}

// BC for SF < 2.7
Expand All @@ -134,6 +152,22 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
*/
public function getName()
{
return 'easyadmin';
return 'JavierEguiluz\Bundle\EasyAdminBundle\Form\Type\EasyAdminFormType';
}

private function isLegacySymfonyForm()
{
return false === method_exists($this, 'getBlockPrefix');
}

private function getFullFormType($shortType)
{
$typesMap = array(
'submit' => 'Symfony\Component\Form\Extension\Core\Type\SubmitType',
'text' => 'Symfony\Component\Form\Extension\Core\Type\TextType',
'integer' => 'Symfony\Component\Form\Extension\Core\Type\IntegerType',
);

return array_key_exists($shortType, $typesMap) ? $typesMap[$shortType] : $shortType;
}
}
4 changes: 2 additions & 2 deletions Resources/config/services.xml
Expand Up @@ -38,14 +38,14 @@
<service id="easyadmin.form.type" class="JavierEguiluz\Bundle\EasyAdminBundle\Form\Type\EasyAdminFormType">
<argument type="service" id="easyadmin.configurator" />
<argument>%easyadmin.config%</argument>
<tag name="form.type" alias="easyadmin" />
<tag name="form.type" alias="JavierEguiluz\Bundle\EasyAdminBundle\Form\Type\EasyAdminFormType" />
</service>

<service id="easyadmin.form.type.extension" class="JavierEguiluz\Bundle\EasyAdminBundle\Form\Extension\EasyAdminExtension">
<call method="setRequest">
<argument type="service" id="request" on-invalid="null" strict="false" />
</call>
<tag name="form.type_extension" alias="form" />
<tag name="form.type_extension" alias="form" extended-type="Symfony\Component\Form\Extension\Core\Type\FormType" />
</service>

<service id="easyadmin.listener.request_post_initialize" class="JavierEguiluz\Bundle\EasyAdminBundle\EventListener\RequestPostInitializeListener">
Expand Down
1 change: 0 additions & 1 deletion Tests/Fixtures/App/config/config.yml
Expand Up @@ -11,7 +11,6 @@ framework:
test: ~
router: { resource: "%kernel.root_dir%/config/routing_base.yml" }
form: true
csrf_protection: false
validation: { enable_annotations: true }
templating: { engines: ['twig'] }
profiler:
Expand Down
36 changes: 18 additions & 18 deletions composer.json
Expand Up @@ -23,33 +23,33 @@
"pagerfanta/pagerfanta" : "~1.0,>=1.0.1",
"sensio/distribution-bundle" : "~2.3|~3.0|~4.0",
"sensio/framework-extra-bundle" : "~3.0,>=3.0.2",
"symfony/config" : "~2.3",
"symfony/dependency-injection" : "~2.3",
"symfony/doctrine-bridge" : "~2.3",
"symfony/event-dispatcher" : "~2.3",
"symfony/form" : "~2.3",
"symfony/framework-bundle" : "~2.3",
"symfony/http-foundation" : "~2.3",
"symfony/http-kernel" : "~2.3",
"symfony/config" : "~2.3|~3.0",
"symfony/dependency-injection" : "~2.3|~3.0",
"symfony/doctrine-bridge" : "~2.3|~3.0",
"symfony/event-dispatcher" : "~2.3|~3.0",
"symfony/form" : "~2.3|~3.0",
"symfony/framework-bundle" : "~2.3|~3.0",
"symfony/http-foundation" : "~2.3|~3.0",
"symfony/http-kernel" : "~2.3|~3.0",
"symfony/twig-bridge" : "^2.3.4",
"twig/extensions" : "~1.0",
"twig/twig" : "~1.14,>=1.14.2|~2.0"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle" : "~2.2",
"phpunit/phpunit" : "~4.4",
"symfony/browser-kit" : "~2.3",
"symfony/console" : "~2.3",
"symfony/css-selector" : "~2.3",
"symfony/dom-crawler" : "~2.3",
"symfony/finder" : "~2.3",
"symfony/security-bundle" : "~2.3",
"symfony/twig-bundle" : "~2.3",
"symfony/validator" : "~2.3",
"symfony/yaml" : "~2.3"
"symfony/browser-kit" : "~2.3|~3.0",
"symfony/console" : "~2.3|~3.0",
"symfony/css-selector" : "~2.3|~3.0",
"symfony/dom-crawler" : "~2.3|~3.0",
"symfony/finder" : "~2.3|~3.0",
"symfony/phpunit-bridge" : "^2.7",
"symfony/security-bundle" : "~2.3|~3.0",
"symfony/twig-bundle" : "~2.3|~3.0",
"symfony/validator" : "~2.3|~3.0",
"symfony/yaml" : "~2.3|~3.0"
},
"autoload": {
"psr-4": { "JavierEguiluz\\Bundle\\EasyAdminBundle\\": "" }
}
}

0 comments on commit 3313c0a

Please sign in to comment.