Skip to content

Commit

Permalink
Merge pull request #1 from DmitriyRuppel/master
Browse files Browse the repository at this point in the history
Dynamically get data for blade directive
  • Loading branch information
tarampampam authored Oct 15, 2018
2 parents 9fb73bb + bb0c9df commit d855a6c
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 11 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## v1.0.3

### Fixed

- Getting data for blade directive [#2]

[#2]:https://github.com/avto-dev/back2front-laravel/issues/2

## v1.0.2

### Fixed
Expand Down
25 changes: 14 additions & 11 deletions src/StackServiceProvider.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

declare(strict_types=1);
declare(strict_types = 1);

namespace AvtoDev\BackendToFrontendVariablesStack;

Expand Down Expand Up @@ -80,23 +80,26 @@ protected function registerBlade()
{
$this->app->afterResolving('blade.compiler', function (BladeCompiler $blade) {
$blade->directive('back_to_front_data', function ($stack_name = null) {
/** @var BackendToFrontendVariablesInterface $service */
$service = $this->app->make(BackendToFrontendVariablesInterface::class);
/** @var ConfigRepository $config */
$config = $this->app->make(ConfigRepository::class);

$stack_name = Str::slug((\is_string($stack_name) && $stack_name !== '')
? $stack_name
: $config->get(static::getConfigRootKeyName() . '.stack_name'));

$tag_text = '<script type="text/javascript">' .
'Object.defineProperty(window, "' . $stack_name . '", {' .
'writable: false, ' .
'value: ' . $service->toJson() .
'});' .
'</script>';

return "<?php echo '{$tag_text}'; ?>";
return \sprintf(
'<?php echo \'<script type="text/javascript">
Object.defineProperty(
window, "%s",
{
writable: false,
value: \', resolve( \'%s\' )->toJson() , \'
}
);
</script>\'; ?>',
$stack_name,
BackendToFrontendVariablesInterface::class
);
});
});
}
Expand Down
32 changes: 32 additions & 0 deletions tests/php/Unit/BladeRenderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,36 @@ public function testRendering()
$this->assertContains((string) $value, $rendered);
}
}

/**
* Rendering test.
*
* @return void
*/
public function testRenderCaching()
{
/** @var BackendToFrontendVariablesInterface $service */
$service = $this->app->make(BackendToFrontendVariablesInterface::class);
/** @var ViewFactory $view */
$view = $this->app->make(ViewFactory::class);

$view->addNamespace('stubs', __DIR__ . '/../stubs/view');

// Set first state
$service->put('foo', 'bar');

$rendered = $view->make('stubs::view')->render();

$this->assertContains( 'foo', $rendered);

// Set another state
$service->put('test_key', 'bar2');
$service->forget('foo');

$rendered2 = $view->make('stubs::view')->render();

// See actual data
$this->assertNotContains( 'foo', $rendered2);
$this->assertContains('test_key', $rendered2);
}
}

0 comments on commit d855a6c

Please sign in to comment.