b2pweb / bdf-form-bundle
Bundle for BDF Form
Installs: 1 288
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ~7.2 | ~8.0
- b2pweb/bdf-form: ~1.0
- symfony/config: ~5.0|~6.0|~7.0
- symfony/dependency-injection: ~5.0|~6.0|~7.0
- symfony/framework-bundle: ~5.0|~6.0|~7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~3.0
- phpunit/phpunit: ~7.0|~8.0|~9.0
- symfony/phpunit-bridge: ~5.0|~6.0|~7.0
- symfony/security-csrf: ~5.0|~6.0|~7.0
- symfony/yaml: ~5.0|~6.0|~7.0
Suggests
- b2pweb/bdf-form-attribute: To use PHP 8 attributes syntax for forms
This package is auto-updated.
Last update: 2024-11-15 09:05:49 UTC
README
Bundle for BDF Form
Installation
composer require b2pweb/bdf-form-bundle
And then add to config/bundles.php
:
<?php return [ // ... Bdf\Form\Bundle\FormBundle::class => ['all' => true], ];
Configuration
To enable auto registration of custom forms and builders, simply enable autoconfigure
and load the package sources :
services: _defaults: autowire: true autoconfigure: true App\Form\: resource: './src/Form/*'
To use CSRF, do not forget to enable the CSRF service :
framework: csrf_protection: enabled: true
Usage
Simply use the container to instantiate the custom form.
Note: The container will automatically inject all dependencies
// Declare the form class MyForm extends \Bdf\Form\Custom\CustomForm { /** * @var MyService */ private $service; // You can declare dependencies on the constructor public function __construct(MyService $service, ?\Bdf\Form\Aggregate\FormBuilderInterface $builder = null) { parent::__construct($builder); $this->service = $service; } protected function configure(\Bdf\Form\Aggregate\FormBuilderInterface $builder) : void { // Configure fields } } // The controller class MyController extends AbstractController { public function save(Request $request) { // Create the form using the container $form = $this->container->get(MyForm::class); // Submit data if (!$form->submit($request->request->all())->valid()) { throw new FormError($form->error()); } $this->service->save($form->value()); return new Reponse('ok'); } }
With PHP 8 attributes
This bundle supports BDF Form attribute.
Install the library using composer :
composer require b2pweb/bdf-form-attribute
Add configuration into config/packages/form.yaml
form: attributes: compile: true # enable compilation of attributes to native PHP code configuratorClassPrefix: 'GeneratedForm\' # Define base namespace (or class prefix) for generated classes configuratorClassSuffix: 'Configurator' # Define generated classes suffix configuratorBasePath: '%kernel.build_dir%/form' # Define the save path
To disable code generation during development, set configuration config/packages/dev/form.yaml
:
form: attributes: compile: false # disable compilation to build dynamically forms
Once configured, you can simply declare forms like example.