이 번들은 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)을 통해 두 가지가 있습니다.
코드를 통해 : 컨트롤러에 Breadcrumb Builder를 주입하고 Breadcrumb 항목을 추가 할 수 있습니다.
<?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 ()
{
// ...
}
}
마지막 단계는 템플릿에 빵 부스러기를 인쇄하려는 곳마다 다음 Twig 기능을 사용하는 것입니다.
{{ 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 매개 변수 (예 : 엔티티 ID)를 동적으로 검색하는 데 유용합니다.translationDomain
label
속성에 제공된 키를 번역하는 데 사용됩니다. null
이면 기본 변환 도메인이 사용됩니다. 트랜스 슬레이트 문자열을 label
에 넣고 번역 키로 사용하고 싶지 않은 경우 false
제공하십시오.참고 : 이 경로 매개 변수가 현재 요청에 대한 URL에 이미 존재하는 한 경로에 필요한 모든 경로 매개 변수를 전달할 필요는 없습니다 . 다시 말해, Breadcrumb 계층 구조가 어떻게 든 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
Route 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
변수를 반복해야합니다.
이러한 상황에서는이 repo를 포크하고 풀 요청을 작성하십시오. 우리는 기부금을 받아들이는 것을 기쁘게 생각합니다!