c975l/toolbar-bundle

Bundle to add a common toolbar to products developed by 975L.com

v3.0.1 2024-01-22 16:44 UTC

README

ToolbarBundle does the following:

  • Displays a toolbar,
  • Includes generic tools,
  • Integrates with your web design.

This Bundle relies on the use of Bootstrap and Fontawesome.

ToolbarBundle dedicated web page.

ToolbarBundle API documentation.

Bundle installation

Step 1: Download the Bundle

Use Composer to install the library

    composer require c975l/toolbar-bundle

Step 2: Enable the Bundle

Then, enable the bundles by adding them to the list of registered bundles in the app/AppKernel.php file of your project:

<?php
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            // ...
            new c975L\ToolbarBundle\c975LToolbarBundle(),
        ];
    }
}

How to use

ToolbarBundle use Fontawesome for icons so you have to load it from your web page. You may use c975L/IncludeLibraryBundle that will allow you to simply add {{ inc_lib('fontawesome', 'css') }} in your layout.html.twig, but if you use c975L/SiteBundle it's already there in stylesheets section :).

Create button - toolbar_button()

You can create a button in a Twig template by calling the following code:

{{ toolbar_button(path('ROUTE', { 'VARIABLE': object.PROPERTY }), 'BUTTON_NAME', 'SIZE[lg|md|sm|xs](default md)', 'USE_ANOTHER_LABEL', 'USE_ANOTHER_STYLE', 'COLOR') }}

Create button with text - toolbar_button_text()

You can create a button with text in a Twig template by calling the following code (data between [] are optional):

{{ toolbar_button_text(path('ROUTE', { 'VARIABLE': object.PROPERTY }), 'BUTTON_NAME', 'SIZE[lg|md|sm|xs](default md)', 'ICON_DISPLAY[true|false](default true)', 'LOCATION[right|bottom|left|top]', 'USE_ANOTHER_LABEL', 'USE_ANOTHER_STYLE', 'COLOR') }}

Create a toolbar - toolbar_display

To create a toolbar, you need to create a template where the tools are defined. Inside this template you can use the Twig Extension toolbar_button() or toolbar_button_text() to define buttons, like in the following:

    {# You can add some test and use the object sent #}
    {% if type === 'YOUR_TYPE' %}
        {# You can pass an object and use it there, with the name 'object' #}
        {{ toolbar_button(path('ROUTE', { 'VARIABLE': object.PROPERTY }), 'BUTTON_NAME', 'SIZE[lg|md|sm|xs](default md)', 'USE_ANOTHER_LABEL', 'USE_ANOTHER_STYLE') }}
        {{ toolbar_button_text(path('ROUTE', { 'VARIABLE': object.PROPERTY }), 'BUTTON_NAME', 'SIZE[lg|md|sm|xs](default md)', 'ICON_DISPLAY[true|false](default true)', 'LOCATION[right|bottom|left|top]') }}
    {% endif %}

Then in your templates simply call the Twig extension {{ toolbar_display('TOOLS_TEMPLATE', 'TYPE', 'SIZE[lg|md|sm|xs]', OBJECT_IF_NEEDED, 'ALIGNMENT[left|center|right](default center)') }}.

You can also specify a css style in your stylesheet for the toolbar:

.toolbar {
    margin-bottom: 2em;
}

Note that the Twig extension ToolbarDashboards is specific to 975L developed products, as it will display a dropdown menu link to other products.

Call from Controller

If you need to call it from a controller, you can do it with the following code:

<?php
//...
    $tools = $this->renderView('LOCATION_OF_YOUR_TEMPLATE_DEFINED_ABOVE', array(
        'type' => 'YOUR_TYPE',
        'object' => YOUR_OBJECT_IF_NEEDED,
    ));
    $toolbar = $this->renderView('@c975LToolbar/toolbar.html.twig', array(
        'tools' => $tools,
        'size' => 'YOUR_SIZE',
        'alignment' => 'YOUR_ALIGNMENT',
    ));

If this project help you to reduce time to develop, you can sponsor me via the "Sponsor" button at the top :)