Skip to content

Commit df0adad

Browse files
committed
refactor Blade directive setup
1 parent cc77f11 commit df0adad

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

config/shared-data.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,12 @@
3333
'name' => 'shared',
3434
],
3535

36+
/*
37+
* Blade directive name.
38+
*
39+
* By default the Blade directive named 'shared'.
40+
*
41+
* It means that the shared data rendering will be available in view files via `@shared`
42+
*/
43+
'blade_directive' => 'shared',
3644
];

src/Providers/SharedDataServiceProvider.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
namespace Coderello\SharedData\Providers;
44

55
use Coderello\SharedData\SharedData;
6-
use Illuminate\Support\Facades\Blade;
76
use Illuminate\Support\ServiceProvider;
7+
use Illuminate\View\Compilers\BladeCompiler;
88
use Illuminate\Contracts\Support\DeferrableProvider;
99

1010
class SharedDataServiceProvider extends ServiceProvider implements DeferrableProvider
@@ -16,10 +16,6 @@ class SharedDataServiceProvider extends ServiceProvider implements DeferrablePro
1616
*/
1717
public function boot()
1818
{
19-
Blade::directive('shared', function () {
20-
return '<?php echo app(\Coderello\SharedData\SharedData::class)->render(); ?>';
21-
});
22-
2319
$this->publishes([
2420
__DIR__.'/../../config/shared-data.php' => config_path('shared-data.php'),
2521
], 'shared-data-config');
@@ -40,6 +36,14 @@ public function register()
4036
$this->app->singleton(SharedData::class, function () {
4137
return new SharedData($this->app['config']['shared-data']);
4238
});
39+
40+
$this->app->extend('blade.compiler', function (BladeCompiler $bladeCompiler) {
41+
$bladeCompiler->directive($this->app['config']['shared-data']['blade_directive'], function () {
42+
return '<?php echo app(\\'.SharedData::class.'::class)->render(); ?>';
43+
});
44+
45+
return $bladeCompiler;
46+
});
4347
}
4448

4549
/**
@@ -51,6 +55,7 @@ public function provides()
5155
{
5256
return [
5357
SharedData::class,
58+
'blade.compiler'
5459
];
5560
}
5661
}

0 commit comments

Comments
 (0)