Этот пакет предоставляет способ создать «динамические» сухари в ваших приложениях Symfony.
Композитор - единственный поддерживаемый метод установки. Запустите следующее, чтобы установить последнюю версию от Packagist:
composer require slope-it/breadcrumb-bundle
Или, если вы предпочитаете, вам может потребоваться любая версия в вашем composer.json
:
{
"require" : {
"slope-it/breadcrumb-bundle" : " * "
}
}
После установки загрузите пакет в класс ядра:
// ...
class AppKernel extends Kernel
{
public function registerBundles ()
{
$ bundles = [
// ...
new SlopeIt BreadcrumbBundle SlopeItBreadcrumbBundle (),
];
// ...
}
// ...
}
Есть два способа создания хлебной крошки: через код (1) или через атрибуты (2).
Через код : вы можете внедрить строитель хлебного крово
<?php
use SlopeIt BreadcrumbBundle Service BreadcrumbBuilder ;
class CoolController extends Controller
{
public function coolStuffAction ( BreadcrumbBuilder $ builder )
{
$ builder -> addItem ( ' home ' , ' home_route ' );
$ builder -> addItem ( ' $entity.property ' , ' entity_route ' );
$ builder -> addItem ( ' cool_stuff ' );
// ...
}
}
Через атрибуты : просто используйте атрибут #[Breadcrumb]
на уровне класса и/или метода. Они будут объединены (класс на первом месте).
ПРИМЕЧАНИЕ. Атрибут может занять либо один элемент (в примере он сделан на уровне класса), либо несколько элементов (в примере, на уровне метода).
<?php
use SlopeIt BreadcrumbBundle Attribute Breadcrumb ;
#[ Breadcrumb ([
' label ' => ' home ' ,
' route ' => ' home_route ' ,
' params ' => [ ' p ' => ' val ' ],
' translationDomain ' => ' domain ' ,
])]
class CoolController extends Controller
{
#[ Breadcrumb ([
[ ' label ' => ' $entity.property ' , ' route ' => ' entity_route ' ],
[ ' label ' => ' cool_stuff ' ],
])]
public function coolStuffAction ()
{
// ...
}
}
Последним шагом является использование следующей функции веток, где бы вы ни хотели, чтобы хлебная карака была напечатана в вашем шаблоне:
{{ slope_it_breadcrumb() }}
Независимо от того, как вы использовали для создания хлебной крошки, результатом будет что -то вроде:
Home > Value of entity property > Cool stuff
В котором первые два элемента являются якорями, а последний - только текст.
Кроме того, в случае, если вам нужно знать, есть ли хлебная рубашка или нет, вы можете использовать:
{{ slope_it_is_breadcrumb_empty() }}
Под капюшоном это бизнес -логика для каждого предмета, в поколении хлебной крошки:
label
будет печатным текстом. Это может быть либо:$
. В этом случае метка хлебной крошки будет извлечена из переменной, переданной в шаблон. Можно использовать пути свойства, например: $variable.property.path
route
будет использоваться для создания URL для якоря элемента (если предоставлен). Если не предоставлен, элемент не будет кликом.params
будут использоваться для генерации URL, связанного с предоставленным маршрутом. Это ассоциативный массив, где каждое значение может быть либо:$variable.property.path
. Лечение точно так же, как на «метке». Это полезно для динамического извлечения параметров URL (например, идентификатор объекта), начиная с переменных просмотра.translationDomain
будет использоваться для перевода ключа, представленного в атрибуте label
. Если null
, будет использоваться домен перевода по умолчанию. Предоставьте false
, если вы поместите непроводную строку в label
, и вы не хотите использовать ее в качестве ключа перевода.Примечание. Вам не нужно передавать все параметры маршрута, которые необходимы по маршруту, если эти параметры маршрута уже присутствуют в URL -адресе для текущего запроса . Другими словами, если ваша иерархическая структура хлебной крошки как -то «соответствует» вашей структуре URL.
Пример: предположим, что у вас есть следующие маршруты, с параметрами и полученными URL:
parent_list | | /parents
parent_view | { parent_id: 12345 } | /parents/12345
children_list | { parent_id: 12345 } | /parents/12345/children
child_view | { parent_id: 12345, child_id: 67890 } | /parents/12345/children/67890
child_edit | { parent_id: 12345, child_id: 67890 } | /parents/12345/children/67890/edit
Если вы находитесь в действии по маршруту children_edit
, и вы хотите создать хлебную рубку, включая все вышеперечисленные шаги, вы сможете использовать следующую аннотацию:
<?php
use SlopeIt BreadcrumbBundle Attribute Breadcrumb ;
#[ Breadcrumb ([
[ ' label ' => ' parents ' , ' route ' => ' parent_list ' ],
[ ' label ' => ' $parent.name ' , ' route ' => ' parent_view ' ],
[ ' label ' => ' children ' , ' route ' => ' children_list ' ],
[ ' label ' => ' $child.name ' , ' route ' => ' child_view ' ],
[ ' label ' => ' edit ' ],
])]
public function childrenEditAction ( $ parentID , $ childrenID )
{
// ...
}
Обратите внимание, как вам не нужно предоставлять параметры маршрута (поскольку текущий запрос уже имеет их все). Это будет работать так же, если вы вместо этого создаете его через код.
Шаблон по умолчанию в пакете для рендеринга config.yml
крово
slope_it_breadcrumb :
template : YourBundle::breadcrumb.html.twig
Если вы намереваетесь сделать это, рекомендуется копировать Resources/views/breadcrumb.html.twig
в свой пакет и настроить его. Тем не менее, в вашем шаблоне вам просто придется итерация по переменной items
, чтобы отобразить свой собственный хлебопекул.
При любом из этих обстоятельств, пожалуйста, распадайте это репо и создайте запрос на притяжение. Мы более чем рады принять вклад!