a2lix / AutoFormBundle

Automate Symfony form building
https://a2lix.fr/bundles/auto-form
MIT License
83 stars 30 forks source link
bundle php symfony symfony-bundle symfony-form

A2lix Auto Form Bundle

Automate form building.

Latest Stable Version Latest Unstable Version License

Total Downloads Monthly Downloads Daily Downloads

Branch Tools
master Build Status Coverage Status

Installation

Use composer:

composer require a2lix/auto-form-bundle

After the successful installation, add/check the bundle registration:

//  bundles.php is automatically updated if flex is installed.
// ...
A2lix\AutoFormBundle\A2lixAutoFormBundle::class => ['all' => true],
// ...

Configuration

There is no minimal configuration, so this part is optional. Full list:

# Create a dedicated a2lix.yaml in config/packages with:

a2lix_auto_form:
    excluded_fields: [id, locale, translatable]       # [1]
  1. Optional.

Usage

In a classic formType

use A2lix\AutoFormBundle\Form\Type\AutoFormType;
...
$builder->add('medias', AutoFormType::class);

Advanced examples

use A2lix\AutoFormBundle\Form\Type\AutoFormType;
...
$builder->add('medias', AutoFormType::class, [
    '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. Optional. If set, override the default value from config.yml
  2. Optional. If set, override the auto configuration of fields
    • [3.a] Optional. - For a field, applied to all locales
    • [3.b] Optional. - For a specific locale of a field
  3. Optional. Common options of symfony forms (max_length, required, trim, read_only, constraints, ...), which was added 'field_type' and 'display'

Additional

Example

See Demo Bundle for more examples.

Contribution help

docker run --rm --interactive --tty --volume $PWD:/app --user $(id -u):$(id -g) composer install --ignore-platform-reqs
docker run --rm --interactive --tty --volume $PWD:/app --user $(id -u):$(id -g) composer run-script phpunit
docker run --rm --interactive --tty --volume $PWD:/app --user $(id -u):$(id -g) composer run-script cs-fixer

License

This package is available under the MIT license.