このバンドルは、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)を介して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
最初の2つのアイテムはアンカーであり、最後のアイテムはテキストのみです。
さらに、パン界にアイテムがあるかどうかを知る必要がある場合は、以下を使用できます。
{{ slope_it_is_breadcrumb_empty() }}
ボンネットの下では、これは、各アイテムのパン粉生成に関連するビジネスロジックです。
label
印刷されたテキストになります。どちらかです:$
で準備された特別な文字列。この場合、パン界のラベルは、テンプレートに渡された変数から抽出されます。プロパティパスを使用できます。例: $variable.property.path
route
アイテムアンカーのURLを生成するために使用されます(提供されている場合)。提供されていない場合、アイテムはクリックできません。params
提供されたルートに関連するURLを生成するために使用されます。それは、各値が次のことをすることができる連想配列です。$variable.property.path
を使用した「特別な」文字列。治療は「ラベル」とまったく同じです。これは、ビュー変数から始まるURLパラメーション(エンティティIDなど)を動的に取得するのに役立ちます。translationDomain
、 label
属性に提供されるキーを翻訳するために使用されます。 null
の場合、デフォルトの変換ドメインが使用されます。 label
に翻訳できない文字列を配置すると、翻訳キーとして使用したくない場合は、 false
提供します。注:現在のリクエストのためにこれらのルートパラメーターが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
変数を反復するだけです。
これらの状況のいずれかで、このレポをフォークしてプルリクエストを作成してください。貢献を受け入れて喜んでいます!