توفر هذه الحزمة طريقة لإنشاء فتات "ديناميكية" في تطبيقات Symfony الخاصة بك.
الملحن هو طريقة التثبيت الوحيدة المدعومة. قم بتشغيل ما يلي لتثبيت أحدث إصدار من Packagist:
composer require slope-it/breadcrumb-bundle
أو ، إذا كنت تفضل ذلك ، فيمكنك طلب أي إصدار في composer.json
:
{
"require" : {
"slope-it/breadcrumb-bundle" : " * "
}
}
بمجرد التثبيت ، قم بتحميل الحزمة في فئة kernel:
// ...
class AppKernel extends Kernel
{
public function registerBundles ()
{
$ bundles = [
// ...
new SlopeIt BreadcrumbBundle SlopeItBreadcrumbBundle (),
];
// ...
}
// ...
}
هناك طريقتان لإنشاء خبز: عبر الكود (1) أو عبر السمات (2).
عبر الكود : يمكنك حقن منشئ 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 ()
{
// ...
}
}
الخطوة الأخيرة هي استخدام وظيفة الغصين التالية أينما تريد طباعة الخبز في القالب الخاص بك:
{{ slope_it_breadcrumb() }}
بغض النظر عن الطريقة التي استخدمت بها لإنشاء خبز ، ستكون النتيجة مثل:
Home > Value of entity property > Cool stuff
حيث العنصرين الأولين هما المراسي والأخير هو النص فقط.
علاوة على ذلك ، في حال كنت بحاجة إلى معرفة ما إذا كان Breadcrumb لديه عناصر أم لا ، يمكنك استخدام:
{{ slope_it_is_breadcrumb_empty() }}
تحت الغطاء ، هذا هو منطق العمل المعني ، لكل عنصر ، في جيل الخبز:
label
هو النص المطبوع. يمكن أن يكون إما:$
. في هذه الحالة ، سيتم استخراج ملصق Breadcrumb من المتغير الذي تم تمريره إلى القالب. يمكن استخدام مسارات الممتلكات ، على سبيل المثال: $variable.property.path
route
لإنشاء عنوان URL لمرسي العنصر (إذا تم توفيره). إذا لم يتم توفيره ، فلن يكون العنصر قابل للنقر.params
لإنشاء عنوان URL المتعلق بالمسار المقدم. إنها مجموعة نقاطية حيث يمكن أن تكون كل قيمة أيضًا:$variable.property.path
. العلاج هو بالضبط كما في "Label". يعد هذا مفيدًا لاسترداد معاملات 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
إذا كنت في حالة عمل 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
لتقديم خبزك المخصص.
في ظل أي من هذه الظروف ، يرجى تورك هذا الريبو وإنشاء طلب سحب. نحن أكثر من سعداء بقبول المساهمات!