sidis405 / laravel-backpack-visualcomposer
此软件包提供了一种轻松管理页面内容的方法
1.0.6
2018-05-17 15:46 UTC
Requires
- php: >=7.1
- backpack/crud: ~3.3.0
README
改进您编辑页面的方式。
安装
composer require novius/laravel-backpack-visualcomposer
然后添加以下内容到 config/app.php
Novius\Backpack\VisualComposer\VisualComposerServiceProvider::class,
最后,运行
php artisan vendor:publish --provider="Novius\Backpack\VisualComposer\VisualComposerServiceProvider"
php artisan migrate
使用
在模型中
use Novius\Backpack\VisualComposer\Traits\VisualComposer;
在CRUD控制器中
public function setup($template_name = false) { parent::setup($template_name); $this->crud->addField([ 'name' => 'visualcomposer_main', 'label' => 'Visual Composer', 'type' => '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
创建新的行模板
为视图创建一个类和文件夹
cd vendor/novius/laravel-backpack-visualcomposer class=MyNewRowTemplate touch src/app/Templates/$class.php mkdir src/resources/views/vendor/visualcomposer/$class touch src/resources/views/vendor/visualcomposer/$class/crud.blade.php touch src/resources/views/vendor/visualcomposer/$class/front.blade.php
在 MyNewRowTemplate.php
中
<?php namespace Novius\Backpack\VisualComposer\Templates; class MyNewRowTemplate extends RowTemplateAbstract { static public $name = 'My new row template'; static public $description = 'This is a new row template'; }
在 crud.blade.php
中
<div class="row-template new-row-template"> <input type="hidden"> <textarea></textarea> </div> @push('crud_fields_scripts') <script> window['vc_boot', {!!json_encode($template)!!}] = function ($row, content) { $('textarea', $row).val(content); var update = function () { $('[type=hidden]', $row).val(this.value); }; update(); $row.on( 'change blur keyup', 'textarea', update ); } </script> @endpush