use \Bozboz\LaravelBackpackVisualcomposer\Traits\VisualComposer;
public function setup($template_name = false)
{
parent::setup($template_name);
$this->crud->addField([
'name' => 'visualcomposer_main',
'label' => 'Visual Composer',
'type' => 'view',
'view' => 'visualcomposer::visualcomposer',
// (optionnal) Only those template will be available
'templates' => [
MyNewRowTemplate::class,
],
// (optionnal) Pre-fill the visualcomposer with rows on new models
'default' => [
['template' => MyNewRowTemplate::class],
],
'wrapperAttributes' => [
'class' => 'form-group col-md-12',
],
]);
}
public function store(PageRequest $request)
{
$r = parent::store($request);
$this->crud->entry->visualcomposer_main = $request->visualcomposer_main;
return $r;
}
public function update(PageRequest $request)
{
$r = parent::update($request);
$this->crud->entry->visualcomposer_main = $request->visualcomposer_main;
return $r;
}
@foreach($page->visualcomposer_main as $row)
{!! $row->template::renderFront($row) !!}
@endforeach
namespace App\Templates;
use Bozboz\LaravelBackpackVisualcomposer\Templates\RowTemplateAbstract;
class MyNewRowTemplate extends RowTemplateAbstract
{
public static $name = 'my-new-row-template';
}
<div class="row-template vc-my-new-row-template">
<input type="hidden" class="content">
<textarea class="some_field"
placeholder="{{ trans('visualcomposer::my-new-row-template.crud.some_field') }}"></textarea>
</div>
@push('crud_fields_scripts')
<script>
window['vc_boot', {!!json_encode($template)!!}] = function ($row, content)
{
var $hiddenInput = $(".content[type=hidden]", $row);
var fields = [
'some_field',
];
// Setup update routine
var update = function () {
var contents = [];
fields.map(function (item) {
contents.push($('.'+item, $row).val());
});
$hiddenInput.val(
JSON.stringify(contents)
);
};
// Parse and fill fields from json passed in params
fields.map(function (item, index) {
try {
$('.'+item, $row).val(JSON.parse(content)[index]);
} catch(e) {
console.log('Empty or invalid json:', content);
}
});
// Update hidden field on change
$row.on(
'change blur keyup',
'input, textarea, select',
update
);
// Initialize hidden form input in case we submit with no change
update();
}
</script>
@endpush
...
'my-new-row-template' => [
'name' => 'My new row template',
'crud' => [
'some_field' => 'Some field for you to write something in',
],
],
sh
php artisan migrate
sh
php artisan vendor:publish --provider="Bozboz\LaravelBackpackVisualcomposer\VisualComposerServiceProvider"
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.