TranslationFormBundle icon indicating copy to clipboard operation
TranslationFormBundle copied to clipboard

Error using TranslationsType or TranslationsFormsType

Open fabianoroberto opened this issue 6 years ago • 5 comments

Environment

Symfony packages

$ composer show --latest 'symfony/*'
symfony/asset                v4.2.3             v4.2.3             Symfony Asset Component
symfony/browser-kit          v4.2.3             v4.2.3             Symfony BrowserKit Component
symfony/cache                v4.2.3             v4.2.3             Symfony Cache component with PSR-6, PSR-16, and tags
symfony/config               v4.2.3             v4.2.3             Symfony Config Component
symfony/console              v4.2.3             v4.2.3             Symfony Console Component
symfony/contracts            v1.0.2             v1.0.2             A set of abstractions extracted out of the Symfony components
symfony/css-selector         v4.2.3             v4.2.3             Symfony CssSelector Component
symfony/debug                v4.2.3             v4.2.3             Symfony Debug Component
symfony/debug-bundle         v4.2.3             v4.2.3             Symfony DebugBundle
symfony/debug-pack           v1.0.7             v1.0.7             A debug pack for Symfony projects
symfony/dependency-injection v4.2.3             v4.2.3             Symfony DependencyInjection Component
symfony/doctrine-bridge      v4.2.3             v4.2.3             Symfony Doctrine Bridge
symfony/dom-crawler          v4.2.3             v4.2.3             Symfony DomCrawler Component
symfony/dotenv               v4.2.3             v4.2.3             Registers environment variables from a .env file
symfony/event-dispatcher     v4.2.3             v4.2.3             Symfony EventDispatcher Component
symfony/expression-language  v4.2.3             v4.2.3             Symfony ExpressionLanguage Component
symfony/filesystem           v4.2.3             v4.2.3             Symfony Filesystem Component
symfony/finder               v4.2.3             v4.2.3             Symfony Finder Component
symfony/flex                 dev-master 87d511b dev-master 87d511b Composer plugin for Symfony
symfony/form                 v4.2.3             v4.2.3             Symfony Form Component
symfony/framework-bundle     v4.2.3             v4.2.3             Symfony FrameworkBundle
symfony/http-foundation      v4.2.3             v4.2.3             Symfony HttpFoundation Component
symfony/http-kernel          v4.2.3             v4.2.3             Symfony HttpKernel Component
symfony/inflector            v4.2.3             v4.2.3             Symfony Inflector Component
symfony/intl                 v4.2.3             v4.2.3             A PHP replacement layer for the C intl extension that includes additional data from the ICU library.
symfony/maker-bundle         v1.11.3            v1.11.3            Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boile...
symfony/monolog-bridge       v4.2.3             v4.2.3             Symfony Monolog Bridge
symfony/monolog-bundle       v3.3.1             v3.3.1             Symfony MonologBundle
symfony/options-resolver     v4.2.3             v4.2.3             Symfony OptionsResolver Component
symfony/orm-pack             v1.0.6             v1.0.6             A pack for the Doctrine ORM
symfony/panther              v0.2.0             v0.2.0             A browser testing and web scraping library for PHP and Symfony.
symfony/phpunit-bridge       v4.2.3             v4.2.3             Symfony PHPUnit Bridge
symfony/polyfill-intl-icu    v1.10.0            v1.10.0            Symfony polyfill for intl's ICU-related data and classes
symfony/polyfill-mbstring    v1.10.0            v1.10.0            Symfony polyfill for the Mbstring extension
symfony/polyfill-php72       v1.10.0            v1.10.0            Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions
symfony/process              v4.2.3             v4.2.3             Symfony Process Component
symfony/profiler-pack        v1.0.4             v1.0.4             A pack for the Symfony web profiler
symfony/property-access      v4.2.3             v4.2.3             Symfony PropertyAccess Component
symfony/property-info        v4.2.3             v4.2.3             Symfony Property Info Component
symfony/routing              v4.2.3             v4.2.3             Symfony Routing Component
symfony/security-bundle      v4.2.3             v4.2.3             Symfony SecurityBundle
symfony/security-core        v4.2.3             v4.2.3             Symfony Security Component - Core Library
symfony/security-csrf        v4.2.3             v4.2.3             Symfony Security Component - CSRF Library
symfony/security-guard       v4.2.3             v4.2.3             Symfony Security Component - Guard
symfony/security-http        v4.2.3             v4.2.3             Symfony Security Component - HTTP Integration
symfony/serializer           v4.2.3             v4.2.3             Symfony Serializer Component
symfony/serializer-pack      v1.0.2             v1.0.2             A pack for the Symfony serializer
symfony/stopwatch            v4.2.3             v4.2.3             Symfony Stopwatch Component
symfony/swiftmailer-bundle   v3.2.5             v3.2.5             Symfony SwiftmailerBundle
symfony/templating           v4.2.3             v4.2.3             Symfony Templating Component
symfony/test-pack            v1.0.5             v1.0.5             A pack for functional and end-to-end testing within a Symfony app
symfony/translation          v4.2.3             v4.2.3             Symfony Translation Component
symfony/twig-bridge          v4.2.3             v4.2.3             Symfony Twig Bridge
symfony/twig-bundle          v4.2.3             v4.2.3             Symfony TwigBundle
symfony/validator            v4.2.3             v4.2.3             Symfony Validator Component
symfony/var-dumper           v4.2.3             v4.2.3             Symfony mechanism for exploring and dumping PHP variables
symfony/var-exporter         v4.2.3             v4.2.3             A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code
symfony/web-link             v4.2.3             v4.2.3             Symfony WebLink Component
symfony/web-profiler-bundle  v4.2.3             v4.2.3             Symfony WebProfilerBundle
symfony/web-server-bundle    v4.2.3             v4.2.3             Symfony WebServerBundle
symfony/yaml                 v4.2.3             v4.2.3             Symfony Yaml Component

PHP version

$ php -v
PHP 7.2.9 (cli) (built: Aug 21 2018 07:42:00) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.9, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans

Subject

In version 3.0.2 of TranslationFormBundle if I use

$builder->add('translations', TranslationsType::class);

the exception Parent form missing is returned

instead if I use

->add('translations', TranslationsFormsType::class, [
    'form_type' => PageTranslationType::class,
])

where PageTranslationType is a form type related to Translation Entity of my Page Class the exception The required option "form_type" is missing. is returned

Steps to reproduce

Expected results

Actual results

Symfony\Component\OptionsResolver\Exception\MissingOptionsException:
The required option "form_type" is missing.

  at vendor/symfony/options-resolver/OptionsResolver.php:763
  at Symfony\Component\OptionsResolver\OptionsResolver->resolve(array())
     (vendor/symfony/form/ResolvedFormType.php:95)
  at Symfony\Component\Form\ResolvedFormType->createBuilder(object(FormFactory), 'a2lix_translationsForms', array())
     (vendor/symfony/form/Extension/DataCollector/Proxy/ResolvedTypeDataCollectorProxy.php:74)
  at Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy->createBuilder(object(FormFactory), 'a2lix_translationsForms', array())
     (vendor/symfony/form/FormFactory.php:76)
  at Symfony\Component\Form\FormFactory->createNamedBuilder('a2lix_translationsForms', object(ResolvedTypeDataCollectorProxy), null, array())
     (vendor/symfony/form/FormFactory.php:58)
  at Symfony\Component\Form\FormFactory->createBuilder('A2lix\\TranslationFormBundle\\Form\\Type\\TranslationsFormsType', null, array())
     (vendor/symfony/form/FormFactory.php:30)
  at Symfony\Component\Form\FormFactory->create('A2lix\\TranslationFormBundle\\Form\\Type\\TranslationsFormsType', null, array())
     (vendor/nelmio/api-doc-bundle/ModelDescriber/FormModelDescriber.php:54)
  at Nelmio\ApiDocBundle\ModelDescriber\FormModelDescriber->describe(object(Model), object(Schema))
     (vendor/nelmio/api-doc-bundle/Model/ModelRegistry.php:89)
  at Nelmio\ApiDocBundle\Model\ModelRegistry->registerDefinitions()
     (vendor/nelmio/api-doc-bundle/ApiDocGenerator.php:72)
  at Nelmio\ApiDocBundle\ApiDocGenerator->generate()
     (vendor/nelmio/api-doc-bundle/Controller/SwaggerUiController.php:53)
  at Nelmio\ApiDocBundle\Controller\SwaggerUiController->__invoke(object(Request), 'default')
     (vendor/symfony/http-kernel/HttpKernel.php:150)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:67)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:198)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (public/index.php:25)

fabianoroberto avatar Feb 18 '19 11:02 fabianoroberto

Hello, i have problem with Symfony 5, EasyAdmin 3, KNP Translatable and A2lix form:

I made new Field in EasyAdmin:

final class TranslationField implements FieldInterface
{
    use FieldTrait;

    public static function new(string $propertyName, ?string $label = null): self
    {
        return (new self())
            ->setProperty($propertyName)
            ->setLabel($label)
            ->setFormType(TranslationsType::class)
            ->setFormTypeOptions(
                [
                    'default_locale' => '%locale%',
                ]
            );
    }
}

And use it in CrudController:

public function configureFields(string $pageName): iterable
    {
        return [
            TranslationField::new('translations')->hideOnIndex(),
            TextField::new('title')->hideOnForm(),
            IntegerField::new('value'),
        ];
    }

And got new error from A2lix: Argument 1 passed to A2lix\AutoFormBundle\ObjectInfo\DoctrineORMInfo::__construct() must be an instance of Doctrine\Common\Persistence\Mapping\ClassMetadataFactory, instance of Doctrine\ORM\Mapping\ClassMetadataFactory given, called in /var/www/kr/sova-grade-form/var/cache/dev/ContainerSd2qxYP/getA2lixAutoForm_Form_Manipulator_DoctrineOrmManipulatorService.php on line 24

I removed parameter type in __construct and method getAssocsConfig for test, and it works. How can i fix it without changing a2lix bundle?) Thank you

e1sep0 avatar Sep 24 '20 07:09 e1sep0

Anyone??

e1sep0 avatar Sep 28 '20 06:09 e1sep0

I'm getting the same error with Symfony 3.4, on swagger api doc page

class QuestionChoiceType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('translations', TranslationsType::class, [
                'fields' => [
                    'title' => [                         
                        'required'  => true,
                    ]
                ]
            ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => QuestionChoice::class,
            'csrf_protection' => false,
            'allow_extra_fields' => true
        ));
    }
    
    public function getBlockPrefix()
    {
        return "question-choices";
    }
}
RuntimeException:
Parent form missing

  at vendor/a2lix/translation-form-bundle/src/Form/EventListener/TranslationsListener.php:46
  at A2lix\TranslationFormBundle\Form\EventListener\TranslationsListener->preSetData(object(FormEvent), 'form.pre_set_data', object(EventDispatcher))
     (vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:214)
  at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(array(object(TranslationsListener), 'preSetData')), 'form.pre_set_data', object(FormEvent))
     (vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:44)
  at Symfony\Component\EventDispatcher\EventDispatcher->dispatch('form.pre_set_data', object(FormEvent))
     (vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/ImmutableEventDispatcher.php:33)
  at Symfony\Component\EventDispatcher\ImmutableEventDispatcher->dispatch('form.pre_set_data', object(FormEvent))
     (vendor/symfony/symfony/src/Symfony/Component/Form/Form.php:336)
  at Symfony\Component\Form\Form->setData(null)
     (vendor/symfony/symfony/src/Symfony/Component/Form/Form.php:476)
  at Symfony\Component\Form\Form->initialize()
     (vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php:210)
  at Symfony\Component\Form\FormBuilder->getForm()
     (vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php:30)
  at Symfony\Component\Form\FormFactory->create('A2lix\\TranslationFormBundle\\Form\\Type\\TranslationsType', null, array('block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'translation_domain' => null, 'auto_initialize' => true, 'trim' => true, 'required' => true, 'property_path' => null, 'mapped' => true, 'by_reference' => false, 'inherit_data' => false, 'compound' => true, 'method' => 'POST', 'action' => '', 'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.', 'allow_file_upload' => false, 'error_mapping' => array(), 'invalid_message' => 'This value is not valid.', 'invalid_message_parameters' => array(), 'allow_extra_fields' => false, 'extra_fields_message' => 'This form should not contain extra fields.', 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_message' => 'The CSRF token is invalid. Please try to resubmit the form.', 'csrf_token_manager' => object(CsrfTokenManager), 'csrf_token_id' => null, 'locales' => array('es', 'en'), 'default_locale' => 'es', 'required_locales' => array('es', 'en'), 'fields' => array(), 'excluded_fields' => array(), 'attr' => array(), 'data_class' => null, 'empty_data' => object(Closure), 'error_bubbling' => true, 'label_attr' => array(), 'upload_max_size_message' => object(Closure), 'validation_groups' => null, 'constraints' => array(), 'documentation' => array(), 'theming_granularity' => 'field'))
     (vendor/nelmio/api-doc-bundle/ModelDescriber/FormModelDescriber.php:54)
  at Nelmio\ApiDocBundle\ModelDescriber\FormModelDescriber->describe(object(Model), object(Schema))
     (vendor/nelmio/api-doc-bundle/Model/ModelRegistry.php:89)
  at Nelmio\ApiDocBundle\Model\ModelRegistry->registerDefinitions()
     (vendor/nelmio/api-doc-bundle/ApiDocGenerator.php:72)
  at Nelmio\ApiDocBundle\ApiDocGenerator->generate()
     (vendor/nelmio/api-doc-bundle/Controller/SwaggerUiController.php:63)
  at Nelmio\ApiDocBundle\Controller\SwaggerUiController->__invoke(object(Request), 'default')
     (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:151)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:68)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:200)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (web/app_dev.php:29)

maurocristy87 avatar Oct 13 '20 14:10 maurocristy87

Hi @e1sep0

Do you still have the error outlined in https://github.com/a2lix/TranslationFormBundle/issues/327#issuecomment-698161814 ? I have a very similar setup with EA 3 and Symfony 5.4 and everything works fine

Thanks

tchapi avatar Jan 05 '22 16:01 tchapi

Hi @e1sep0

Do you still have the error outlined in #327 (comment) ? I have a very similar setup with EA 3 and Symfony 5.4 and everything works fine

Thanks

Hi, haven`t noticed anymore, try to install last version of bundles

e1sep0 avatar Jan 06 '22 11:01 e1sep0