koff / i18n-form-bundle
Translate your doctrine objects easily with some helps
Installs: 14 185
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 3
Forks: 1
Open Issues: 1
Type:symfony-bundle
Requires
- php: ^7.0.8
- doctrine/doctrine-bundle: ^1.6.10
- doctrine/orm: ^2.5
- symfony/config: ~3.4|~4.0
- symfony/dependency-injection: ~3.4|~4.0
- symfony/form: ~3.4|~4.0
- symfony/http-kernel: ~3.4|~4.0
- symfony/twig-bundle: ~3.4|~4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.8
- symfony/phpunit-bridge: ^3.4|^4.0
- symfony/validator: ^3.4|^4.0
- symfony/yaml: ^3.4|^4.0
Suggests
- knplabs/doctrine-behaviors: For Knp strategy
- stof/doctrine-extensions-bundle: For Atlantic18/DoctrineExtensions
README
This bundle is fork of a2lix/TranslationFormBundle, reorganized and optimized to work with symfony flex
Requirements
- Symfony flex with Symfony 3.4|4.0
- i18n Doctrine strategy of your choice
- KnpLabs/DoctrineBehaviors with
knplabs/doctrine-behaviors
- Atlantic18/DoctrineExtensions with
stof/doctrine-extensions-bundle
- KnpLabs/DoctrineBehaviors with
Installation
composer req koff/i18n-form-bundle
Configuration
Full configuration example
# config/packages/i18n_form.yaml i18n_form: locales: [en, fr, es, de] required_locales: [fr] excluded_fields: ['id', 'locale', 'translatable'] form_theme: 'bootstrap_3' # you can use 'bootstrap_3' or 'bootstrap_4' form template
Usage
Basic example
use Koff\Bundle\I18nFormBundle\Form\Type\TranslationsType; //... $builder->add('translations', TranslationsType::class);
Advanced example
use Koff\Bundle\I18nFormBundle\Form\Type\TranslationsType; //... $builder->add('translations', TranslationsType::class, [ 'locales' => ['en', 'fr', 'es', 'de'], // [1] 'default_locale' => ['en'] // [1] 'required_locales' => ['fr'], // [1] 'fields' => [ // [2] 'description' => [ // [3.a] 'field_type' => 'textarea', // [4] 'label' => 'descript.', // [4] 'locale_options' => [ // [3.b] 'es' => ['label' => 'descripciĆ³n'] // [4] 'fr' => ['display' => false] // [4] ] ] ], 'excluded_fields' => ['details'] // [2] ]);
- [1] Optionnal. If set, override the default value from config.yml
- [2] Optionnal. If set, override the default value from config.yml
- [3] Optionnal. If set, override the auto configuration of fields
- [3.a] Optionnal. - For a field, applied to all locales
- [3.b] Optionnal. - For a specific locale of a field
- [4] Optionnal. Common options of symfony forms (max_length, required, trim, read_only, constraints, ...), which was added 'field_type' and 'display'
Additional
TranslationsFormsType
A different approach for entities which don't share fields untranslated. No strategy used here, only a locale field in your entity.
use Koff\Bundle\I18nFormBundle\Form\Type\TranslationsFormsType; //... $builder->add('translations', TranslationsFormsType::class, [ 'locales' => ['en', 'fr', 'es', 'de'], // [1] 'default_locale' => ['en'] // [1] 'required_locales' => ['fr'], // [1] 'form_type' => ProductMediaType::class, // [2 - Mandatory] 'form_options' => [ // [2bis] 'context' => 'pdf' ] ]);
- [1] Optionnal. If set, override the default value from config.yml
- [2 - Mandatory]. A real form type that you have to do
- [2bis] Optionnal. - An array of options that you can set to your form
TranslatedEntityType
Modified version of the native 'entity' symfony2 form type to translate the label in the current locale by reading translations
use Koff\Bundle\I18nFormBundle\Form\Type\TranslatedEntityType; //... $builder->add('medias', TranslatedEntityType::class, [ 'class' => 'App\Entity\Media', // [1 - Mandatory] 'translation_property' => 'text', // [2 - Mandatory] 'multiple' => true, // [3] ]);
- [1] Path of the translatable class
- [2] Property/Method of the translatable class that will be display
- [3] Common options of the 'entity' symfony2 form type (multiple, ...)
Credits
All credits goes to David ALLIX and his a2lix/TranslationFormBundle
License
This package is available under the MIT license.