Giter VIP home page Giter VIP logo

breadcrumbsbundle's Introduction

Библиотека хлебных крошек

Установка

composer require kozhilya/breadcrumbs-bundle

Использование

Описание крошек

Необходимо сервисом реализовать класс AbstractDefenision.

Пример реализации подобного класса:

namespace App\Service\Breadcrumbs;

use Kozhilya\BreadcrumbsBundle\Breadcrumbs\AbstractDefinition;
use Kozhilya\BreadcrumbsBundle\Builder\Generator;
use Kozhilya\BreadcrumbsBundle\Builder\Item;
use Kozhilya\BreadcrumbsBundle\Nodes\RootNode;

class MainBreadcrumbs extends AbstractDefinition
{
    // В этом классе перечисляются доступные крошки
    public function getBreadcrumbs(): array
    {
        return [
            new RootNode(   // RootNode указывает, что крошка не имеет дополнительных параметров 
                'index',              // Имя хлебной крошки 
                 [$this, 'index']     // Метод, обрабатывающий содержимое
            ),
            new RootNode('login', [$this, 'login']),
            new ActionNode( // ActionNode указывает, что крошка относится к объектам некоторого класса 
                User::class,          // Класс, к которому относится крошка
                'index',              // Имя хлебной крошки может совпадать с другими, при условии, что классы различаются 
                [$this, 'userIndex']  // Метод, обрабатывающий содержимое
            ),
        ];
    }

    public function index(Generator $generator)
    {
        $path = $this->generateUrl('app_index');
        
        // $generator->append добавляет элемент хлебной крошки
        $generator->append("Главная страница", $path);
    }

    public function login(Generator $generator)
    {
        // $generator->parent указывает, какой элемент продолжает эта хлебная крошка
        $generator->parent('index');

        $path = $this->generateUrl('app_login');
        $generator->append("Вход в систему", $path);
    }
    
    public function userIndex(Generator $generator, User $user) // Второй аргумент - это объект, к которому относится крошка
    {
        $generator->parent('index');

        $name = $this->translator->trans('menu.comics', [], 'app');
        $path = $this->generateUrl('comic_list');

        $generator->append($user->getName(), $path);
    }
}

Использование крошек

Пример файла index.html.twig

{% extends 'base.html.twig' %}
{% block title %}{% endblock %}

{% do set_breadcrumbs('index') %}

{# ... #}

Пример файла login.html.twig

{% extends 'base.html.twig' %}
{% block title %}Вход в систему{% endblock %}

{% do set_breadcrumbs('login') %}

{# ... #}

Пример файла user/index.html.twig

{% extends 'base.html.twig' %}
{% block title %}{{ user.name }}{% endblock %}

{% do set_breadcrumbs('index', user) %}

{# ... #}

Вставка крошек

Пример файла base.html.twig

<body>
    {{ breadcrumbs() }}
    {% block content %}{% endblock %}
</body>

breadcrumbsbundle's People

Contributors

kozhilya avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.