2017 © Pedro Peláez
 

library symfony-menu

Breadcrumbs builder

image

zemd/symfony-menu

Breadcrumbs builder

  • Monday, November 21, 2016
  • by zemd
  • Repository
  • 1 Watchers
  • 0 Stars
  • 2 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Symfony Menu

Very lightweight but powerful breadcrumbs builder for symfony, (*1)

Installation

composer require zemd/symfony-menu

Usage

This component build breadcrumb path leveraging standard symfony router. If you want to skip or modify some part of the path feel free to use @Breadcrumbs annotation., (*2)

For instance we have next controller:, (*3)

class MyController {

  /**
   * This route should be skipped from menu chain
   * 
   * @Breadcrumbs(skip=true)
   */
  public function myActionIwantToSkip() {}

  /**
   * This route should be in the root of menu tree 
   *
   * @Route("/dashboard", name="dashboard")
   * @Breadcrumbs(root=true)
   */
  public function dashboardAction() {}

  /**
   * This route should be added automatically into menu chain 
   *
   * @Route("/dashboard/graphs")
   */
  public function viewMoreGraphsAction() {}
}

Let's now share breadcrumbs into the view by using twig globals as example:, (*4)

class BreadcrumbsGlobalExtension extends \Twig_Extension implements Twig_Extension_GlobalsInterface
{
    const NAME = 'zemd_breadcrumbs_extension';

    /** @var BreadCrumbsManager */
    protected $breadcrumbsManager;

    public function __construct(BreadCrumbsManager $breadcrumbsManager) {
        $this->breadcrumbsManager = $breadcrumbsManager;
    }

    /**
     * Returns the name of the extension.
     *
     * @return string The extension name
     */
    public function getName() {
        return self::NAME;
    }

    public function getGlobals() {
        return [
            'zemd_breadcrumbs' => $this->breadcrumbsManager->getBreadcrumbs()
        ];
    }
}
services:
  zemd.breadcrumbs_manager:
    class: Zemd\Component\Menu\BreadCrumbsManager
    arguments: ["@router", "@annotation_reader", "@request_stack"]
    calls:
      - [setContainer, ["@service_container"]]

  zemd.breadcrumbs.twig_extension:
    class: Path\To\Your\BreadcrumbsGlobalExtension
    public: false
    arguments: ["@zemd.breadcrumbs_manager"]
    tags:
      - { name: twig.extension }

  zemd.router_checker.twig_extension:
    class: Zemd\Component\Menu\Twig\Extension\RouteChecker
    public: false
    arguments: ["@request_stack", "@zemd.breadcrumbs_manager"]
    tags:
      - { name: twig.extension }

Now we can show our menu in the header and style or translate menu items as we want:, (*5)

<nav id="Nav-bread" class="navbar navbar-breadcrumbs clearfix" role="navigation">
  {% for node in zemd_breadcrumbs %}
      <div class="navbar__item{% if (is_route_active(node.routeName)) %} active{% endif %}">
          <a href="{{ path(node.routeName, node.pathParams) }}">
              <span>{{ node.routeName|trans({}, "breadcrumbs") }}</span>
          </a>
      </div>
  {% endfor %}
</nav>

Advanced usage

// TODO: Example for generator, (*6)

License

Symfony Menu is released under the MIT license., (*7)

, (*8)

The Versions

21/11 2016

dev-master

9999999-dev https://reactive.world

Breadcrumbs builder

  Sources   Download

MIT

The Requires

  • php >=5.6

 

symfony menu breadcrumbs

21/11 2016

1.0.0

1.0.0.0 https://reactive.world

Breadcrumbs builder

  Sources   Download

MIT

The Requires

  • php >=5.6

 

symfony menu breadcrumbs