File tree Expand file tree Collapse file tree 2 files changed +26
-2
lines changed Expand file tree Collapse file tree 2 files changed +26
-2
lines changed Original file line number Diff line number Diff line change 22
33namespace Atthakasem \LaravelJsonMenu ;
44
5+ use DOMDocument ;
6+ use DOMXPath ;
7+
58class 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}
Original file line number Diff line number Diff 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');
You can’t perform that action at this time.
0 commit comments