Dashboard
=========
The Dashboard is the main landing page. By default it lists your mapped models,
as defined by your ``Admin`` services. This is useful to help you start using
``SonataAdminBundle`` right away, but there is much more that you can do to take
advantage of the Dashboard.
The Dashboard is, by default, available at ``/admin/dashboard``, which is handled by
the ``SonataAdminBundle:Core:dashboard`` controller action. The default view file for
this action is ``SonataAdminBundle:Core:dashboard.html.twig``, but you can change
this in your ``config.yml``:
.. configuration-block::
.. code-block:: yaml
# app/config/config.yml
sonata_admin:
templates:
dashboard: SonataAdminBundle:Core:dashboard.html.twig
.. note::
This view, like most of the ``SonataAdminBundle`` views, extends a global
template file, which also contains significant parts to the page. More information
about this is available in the :doc:`templates` chapter.
Blocks
------
The Dashboard is actually built using ``Blocks`` from ``SonataBlockBundle``. You
can learn more about this bundle and how to build your own Blocks on the
`SonataBlock documentation page`_.
The ``Admin`` list block
------------------------
The ``Admin`` list is a ``Block`` that fetches information from the ``Admin`` service's
``Pool`` and prints it in the nicely formatted list you have on your default Dashboard.
The ``Admin`` list is defined by the ``sonata.admin.block.admin_list`` service, which is
implemented by the ``Block\AdminListBlockService`` class. It is then rendered using the
``SonataAdminBundle:Block:block_admin_list.html.twig`` template file.
Feel free to take a look at these files. You'll find the code rather short and easy to
understand, and it will be a great help when implementing your own blocks.
Configuring the ``Admin`` list
------------------------------
As you probably noticed by now, the ``Admin`` list groups ``Admin`` mappings together.
There are several ways in which you can configure these groups.
By default the admins are ordered the way you defined them. With the setting ``sort_admins``
groups and admins will be ordered by their respective label with a fallback to the admin id.
Using the ``Admin`` service declaration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The first, and most commonly used, method is to set a group when defining your ``Admin``
services:
.. configuration-block::
.. code-block:: xml
This is a sonata.block.service.text
from the Block
Bundle, you can create and add new block in these area by configuring
the sonata_admin
section.
sonata.block.service.rss
):
-
position: right
type: sonata.block.service.rss
roles: [POST_READER]
settings:
title: Sonata Project's Feeds
url: https://sonata-project.org/blog/archive.rss
.. note::
Blocks may accept/require additional settings to be passed in order to
work properly. Refer to the associated documentation/implementation to
get more information on each block's options and requirements.
You can also configure the ``roles`` section to configure users that can
view the block.
Display two ``Admin`` list blocks with different dashboard groups
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The same block can have multiple instances, and be displayed multiple times
across the Dashboard using different configuration settings for each instance.
A particular example is the ``Admin`` list block, which can be configured to
suit this scenario.
.. configuration-block::
.. code-block:: yaml
# app/config/config.yml
sonata_admin:
dashboard:
blocks:
# display two dashboard blocks
-
position: left
type: sonata.admin.block.admin_list
settings:
groups: [sonata_page1, sonata_page2]
-
position: right
type: sonata.admin.block.admin_list
settings:
groups: [sonata_page3]
groups:
sonata_page1:
items:
- sonata.page.admin.myitem1
sonata_page2:
items:
- sonata.page.admin.myitem2
- sonata.page.admin.myitem3
sonata_page3:
items:
- sonata.page.admin.myitem4
In this example, you would have two ``admin_list`` blocks on your dashboard, each
of them containing just the respectively configured groups.
.. _`SonataBlock documentation page`: https://sonata-project.org/bundles/block/master/doc/index.html
Statistic Block
~~~~~~~~~~~~~~~
A statistic block can be used to display a simple counter with a color, an font awesome icon and a text. A
counter is related to the filters from one admin
.. configuration-block::
.. code-block:: yaml
sonata_admin:
dashboard:
blocks:
-
class: col-lg-3 col-xs-6 # twitter bootstrap responsive code
position: top # zone in the dashboard
type: sonata.admin.block.stats # block id
settings:
code: sonata.page.admin.page # admin code - service id
icon: fa-magic # font awesome icon
text: Edited Pages
color: bg-yellow # colors: bg-green, bg-red and bg-aqua
filters: # filter values
edited: { value: 1 }
Dashboard Layout
~~~~~~~~~~~~~~~~
Supported positions right now are the following:
* top
* left
* center
* right
* bottom
The layout is as follows:
.. code-block:: bash
TOP TOP TOP
LEFT CENTER RIGHT
LEFT CENTER RIGHT
LEFT CENTER RIGHT
BOTTOM BOTTOM BOTTOM
On ``top`` and ``bottom`` positions, you can also specify an optional ``class`` option to set the width of the block.
.. configuration-block::
.. code-block:: yaml
# app/config/config.yml
sonata_admin:
dashboard:
blocks:
# display dashboard block in the top zone with a col-md-6 css class
-
position: top
class: col-md-6
type: sonata.admin.block.admin_list
Configuring what actions are available for each item on the dashboard
---------------------------------------------------------------------
By default. A "list" and a "create" option are available for each item on the
dashboard. If you created a custom action and want to display it along the
other two on the dashboard, you can do so by overriding the
``getDashboardActions()`` method of your admin class:
.. code-block:: php
'Import',
'url' => $this->generateUrl('import'),
'icon' => 'import',
'translation_domain' => 'SonataAdminBundle', // optional
'template' => 'SonataAdminBundle:CRUD:dashboard__action.html.twig', // optional
);
return $actions;
}
}
You can also hide an action from the dashboard by unsetting it:
.. code-block:: php