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 2
2
3
3
namespace Atthakasem \LaravelJsonMenu ;
4
4
5
+ use DOMDocument ;
6
+ use DOMXPath ;
7
+
5
8
class LaravelJsonMenu
6
9
{
7
10
public $ menu ;
@@ -16,8 +19,23 @@ public function __construct(?string $menuName = null, ?string $directory = null)
16
19
*
17
20
* @return string
18
21
*/
19
- public function generate (): string
22
+ public function generateMenu (): string
20
23
{
21
24
return $ this ->menu ->generateHtml ();
22
25
}
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
+ }
23
41
}
Original file line number Diff line number Diff line change @@ -14,8 +14,14 @@ class LaravelJsonMenuServiceProvider extends ServiceProvider
14
14
*/
15
15
public function boot (): void
16
16
{
17
+ // Menu directive
17
18
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(); ?> " ;
19
25
});
20
26
21
27
// $this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'atthakasem');
You can’t perform that action at this time.
0 commit comments