Skip to content

Commit 6592efa

Browse files
author
Thitithan Atthakasem
committed
Add new directive @breadcrumb
1 parent 09609b1 commit 6592efa

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/LaravelJsonMenu.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace Atthakasem\LaravelJsonMenu;
44

5+
use DOMDocument;
6+
use DOMXPath;
7+
58
class LaravelJsonMenu
69
{
710
public $menu;
@@ -16,8 +19,23 @@ public function __construct(?string $menuName = null, ?string $directory = null)
1619
*
1720
* @return string
1821
*/
19-
public function generate(): string
22+
public function generateMenu(): string
2023
{
2124
return $this->menu->generateHtml();
2225
}
26+
27+
/**
28+
* Generate the breadcrumb
29+
*
30+
* @return string
31+
*/
32+
public function generateBreadcrumb(): string
33+
{
34+
$doc = new DOMDocument;
35+
$doc->loadHTML($this->menu->generateHtml());
36+
$xpath = new DOMXPath($doc);
37+
$activeLinks = $xpath->query('//a[contains(concat(" ", normalize-space(@class), " "), " active ")]');
38+
39+
return $activeLinks === false ? '' : $this->menu->generateBreadcrumb($activeLinks);
40+
}
2341
}

src/LaravelJsonMenuServiceProvider.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,14 @@ class LaravelJsonMenuServiceProvider extends ServiceProvider
1414
*/
1515
public function boot(): void
1616
{
17+
// Menu directive
1718
Blade::directive('menu', function ($expression) {
18-
return "<?= (new Atthakasem\LaravelJsonMenu\LaravelJsonMenu($expression))->generate(); ?>";
19+
return "<?= (new Atthakasem\LaravelJsonMenu\LaravelJsonMenu($expression))->generateMenu(); ?>";
20+
});
21+
22+
// Breadcrumb directive
23+
Blade::directive('breadcrumb', function ($expression) {
24+
return "<?= (new Atthakasem\LaravelJsonMenu\LaravelJsonMenu($expression))->generateBreadcrumb(); ?>";
1925
});
2026

2127
// $this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'atthakasem');

0 commit comments

Comments
 (0)