So I’m trying out the Kirby 3 Blade template plugin by @beebmx and I’m wondering what the best way to us snippets is. I’m currently do something like this…
@foreach ($page->herobuilder()->toBuilderBlocks() as $block)
<?php snippet('blocks/' . $block->_key(), array('data' => $block)) ?>
@endforeach
But im guessing there is a ‘blade’ way to use the snippet? I thought sub-views might be it but it did not work.
Ah ha! Like the way from the old K2 plugin works…
{!! snippet('global/footer', ['scripts' => true]) !!}
beebmx
February 6, 2019, 4:16pm
3
You can still use the snippets like the old way:
{!! snippet('global/footer', ['scripts' => true]) !!}
But if you want to use the “blade” way you can use it with includes:
@include('view.name')
@include('view.name', ['some' => 'data'])
Or you can create a component:
@component('alert')
<strong>Whoops!</strong> Something went wrong!
@endcomponent
All the includes or components should be in the template directory with the .blade.php extension.
1 Like
Thanks @beebmx … thats the intended folder structure for using blade inside the snippets?
I renamed mine to .blade.php
which means my snippet calls look like this now:
@if (!$page->showmenuinhero()->bool())
{!! snippet('global/header.blade') !!}
@endif
Trouble is, I cant seem to be able to use Blade inside the snippets, it throws a whoops. I am also using the Builder plugin and to get it to load those blocks I had to do this…
@foreach ($page->herobuilder()->toBuilderBlocks() as $block)
{!! snippet('blocks/' . $block->_key().'.blade', array('data' => $block)) !!}
@endforeach
But im guessing Blade wont work in those either. My files structure looks like this…
How can I use Blade inside snippets and work with the Builder Plugin?
ah… i see … i missed this line… some restructuring coming up then…
beebmx
February 6, 2019, 5:03pm
6
If you call the snippet helper, it will call the snippet directory.
If you call the @include blade directive the file has to be in the template directory.
For example:
<!-- /site/templates/blocks/basiccontent.blade.php -->
@include('blocks.basiccontent')
Or if you want to send data to the subview:
<!-- /site/templates/blocks/basiccontent.blade.php -->
@include('blocks.basiccontent', ['some' => 'data'])
1 Like