HTML Action Bundle
This bundle provides CRUD + List Actions to be used with ElaoAdminBundle, (*1)
Installation
Require the bundle in Composer:, (*2)
$ composer require elao/html-action-bundle
Install the bundle in your AppKernel:, (*3)
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
//...
// ElaoHtmlActionBundle requires ElaoAdminBundle, you'll need to register it too.
// new Elao\Bundle\ElaoAdminBundle\ElaoAdminBundle(),
new Elao\Bundle\HtmlActionBundle\ElaoHtmlActionBundle(),
);
}
Configuration
The HtmlActionBundle provides 5 actions for the AdminBundle:, (*4)
-
html_list: a list of models. e.g. "GET /posts"
-
html_create: a creation form and its POST handler. e.g. "GET|POST /posts/new"
-
html_read: details for a single model. e.g. "GET /posts/{id}"
-
html_update: a modification form for a single model and its POST handler. e.g. "GET|POST /posts/{id}/edit"
-
html_delete: a deletion form for a single model (ask for user confirmation) and its POST handler. e.g. "GET|DELETE /posts/{id}/delete"
Here's how you define a simple CRUD administration for a "Post" entity., (*5)
elao_admin:
administrations:
# Administration, named after the model, will impact urls and route names
post:
# The repository service for the Post model (usually DoctrineRepository for model "Post")
repository: blog.repository.post
# The list of actions
actions:
list:
# We're using default values for the list
html_list: ~
create:
html_create:
# Specify the form type to use to create a Post
form: BlogBundle\Form\PostType
update:
html_update:
# Specify the form type to use to edit a Post
form: BlogBundle\Form\PostType
read:
# We're using default values for the read
html_read: ~
delete:
html_delete:
# We're adding a security restriction on the delete action
security: has_role('ROLE_ADMIN')
Don't forget to declare the corresponding repository service:
(extends elao_admin.repository.doctrine
/Elao\Bundle\AdminBundle\Service\DoctrineRepository
or use your own implementation of Elao\Bundle\AdminBundle\Behaviour\RepositoryInterface
), (*6)
# services.yml
blog.repository.post:
parent: elao_admin.repository.doctrine
arguments: ['BlogBundle\Entity\Post']
Full configuration
List, (*7)
Parameter |
Description |
Required |
Default value |
view |
The template to render the page with. |
false |
:post:list.html.twig |
view_parameter |
The variable name of the model or list of model in the template. |
false |
posts |
Create, (*8)
Parameter |
Description |
Required |
Default value |
form |
The form type to use to create the model. |
true |
view |
The template to render the page with. |
false |
:post:create.html.twig |
view_parameter |
The variable name of the model or list of model in the template. |
false |
post |
redirection |
The action to redirect the user to when the action has been performed. |
false |
list |
Read, (*9)
Parameter |
Description |
Required |
Default value |
view |
The template to render the page with. |
false |
:post:update.html.twig |
view_parameter |
The variable name of the model or list of model in the template. |
false |
post |
Update, (*10)
Parameter |
Description |
Required |
Default value |
form |
The form type to use to create the model. |
true |
view |
The template to render the page with. |
false |
:post:update.html.twig |
view_parameter |
The variable name of the model or list of model in the template. |
false |
post |
redirection |
The action to redirect the user to when the action has been performed. |
false |
list |
Delete, (*11)
Parameter |
Description |
Required |
Default value |
form |
The form type to use to create the model. |
false |
Elao\Bundle\HtmlActionBundle\Form\Type\DeleteType |
view |
The template to render the page with. |
false |
:post:delete.html.twig |
view_parameter |
The variable name of the model or list of model in the template. |
false |
post |
redirection |
The action to redirect the user to when the action has been performed. |
false |
list |
Views
Please note that the views are not provided with the bundle. You have to create them to display the different forms., (*12)
Default path for the views is app/Resources/[name]/[alias].html.twig
.
You can override this by setting an explicit view in action's options., (*13)
Doctrine service repositories (optional):
For convenience, you can use AdminBundle's DoctrineRepository as the default doctrine repository.
This way the Doctrine entity manager's getRepository
method will return the repository service declared for each model., (*14)
To activate this feature:, (*15)
# config.yml
elao_admin:
doctrine_service_repositories: true
doctrine:
default_repository_class: Elao\Bundle\AdminBundle\Service\DoctrineRepository
repository_factory: elao_admin.repository_factory.doctrine