xis / easy-forms-bundle
Easy forms bundle
Installs: 20
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.4
- sensio/framework-extra-bundle: ~3.0
This package is not auto-updated.
Last update: 2024-12-21 17:43:24 UTC
README
Easy form flow handling in Symfony controllers.
Why?
- use really thin controllers
- make your controller unit-testable easier
- Do not Repeat Yourself implementing the boring form-subbmission code!
All you need is to use the @Form class annotation, for example:
@Form("new_form",method="createCreateForm")
With this annotation you can list all the forms used in current controller. The method
attribute points to method that creates this particular form.
Now, you can annotate methods which "starts" form-flow with the @FormStarter
and the methods which accepts form submission using the @FormAcceptor
annotation.
The FormListener will handle the flow, it will create the form and inject it into the template parameters in form-starter methods, so you don't have to do it manually. Also, it will handle the acceptor; bind and validate the form. Note that the form-acceptor method is executed only if the form is valid, so the only thing you need to do in your form-acceptor method is to persist your fresh created/updated entity.
If the form submission fails, the flow stops at starter method - it will show the bound form with error message.
You can also "decorate" the form-acceptor behavior for failed forms.
Use the rejector
property to point a method which will be executed when form submission fails. This may be useful when you need to show some flash-messages or use some logging.
You may want to access the form in the form-acceptor method. To do this, use the param
property of @FormAcceptor
annotation and then, the form will be passed as the input parameter of form-acceptor method.
See the PostController
class for example how to use those annotations. If you want to see how it works, check out the example symfony-project that uses this bundle.
Note that you need to use the @Template
annotations in your form-starter controller, because FormListener needs to act before the view is rendered.
Installation
Just add the following line to the "require"
section in your composer.json file:
"xis/easy-forms-bundle": "~0.1"
Don't forget to update composer dependencies:
composer.phar update
Then you need to update your AppKernel.php
file and enable the bundle by adding the folowing entry to the $bundles
array in registerBundles
method:
new Xis\EasyFormsBundle\XisEasyFormsBundle(),
And that's it.
MIT License
The bundle is distributed under the MIT license.