sevendays / filament-page-builder
Filament的可视化页面构建器
Requires
- php: ^8.2
- filament/filament: ^3.0.75
- filament/spatie-laravel-translatable-plugin: ^3.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.13.5
- wire-elements/modal: ^2.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.23
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
- dev-main
- 3.x-dev
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.0.0
- dev-dependabot/github_actions/dependabot/fetch-metadata-2.0.0
- dev-dependabot/github_actions/ramsey/composer-install-3
- dev-dependabot/github_actions/aglipanci/laravel-pint-action-2.3.1
- dev-dependabot/github_actions/actions/checkout-4
This package is auto-updated.
Last update: 2024-09-02 14:32:32 UTC
README
使用此包,您将获得一个新的Filament字段(类似于Builder),但它具有可视UI和动态类型。
请注意,这是一个预生产包,许多东西可能仍然存在错误,并且它可能无法与其他一些包(如翻译)一起工作。
方法和流程可能在使用第一个版本之前发生变化,因此如果您使用它,请记住,composer更新可能会破坏它。
如果您遇到问题,请提供拉取请求。
查看演示
安装
您可以通过composer安装此包
composer require sevendays/filament-page-builder
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="filament-page-builder-migrations"
php artisan migrate
您可以使用以下命令发布配置文件(目前没有配置)
php artisan vendor:publish --tag="filament-page-builder-config"
可选,您可以使用以下命令发布视图
php artisan vendor:publish --tag="filament-page-builder-views"
这是已发布配置文件的内容
return [
];
使用方法
Filament页面构建器是一个自定义的Filament字段,它为Builder字段添加了功能。
2023年11月13日预览现在通过配置可选。
- 预览可能会干扰块内配置的表单
- 预览将所有块字段设置为响应式,以进行“实时”预览部分
如果您同意,您可以通过以下方式启用预览
return [ 'enablePreview' => true, ];
要使用此功能,请根据Filament文档创建模型和资源,然后执行以下操作
1. 生成一个块
您可以使用以下命令生成一个块
php artisan make:page-builder-block DemoBlock
这将创建2个文件
app/Filament/Blocks/DemoBlock.php
:这是您定义表单字段和渲染视图的地方。resources/views/filament/blocks/demo-block.blade.php
:这是您的块应该如何渲染。
默认生成器仅提供“标题”字段。
注意:所有字段默认可翻译。但是,您可以通过添加以下方法与字段ID共享字段
public static function getSharedFields(): array { return ['show']; } public function form(): array { return [ TextInput::make('title'), Toggle::make('show') ]; }
2. 将合约和特质添加到您的模型中
为了保存块,您需要将Blockable接口和HasBlocks特质添加到您的模型中。
<?php namespace App\Models; use Sevendays\FilamentPageBuilder\Models\Contracts\Blockable; use Sevendays\FilamentPageBuilder\Models\Traits\HasBlocks; use Illuminate\Database\Eloquent\Model; class Page extends Model implements Blockable { use HasBlocks; protected $fillable = [ 'title' ]; }
3. 将字段添加到您的资源表单中
现在我们可以在资源表单中添加字段
<?php use Sevendays\FilamentPageBuilder\Forms\Components\BlockEditor; use App\Filament\Blocks\DemoBlock; public static function form(Form $form): Form { return $form ->schema([ BlockEditor::make('blocks') ->blocks([ // You can add more blocks here. DemoBlock::class, ]) ->renderInView('blocks.preview'), // Optional: To render the preview in a different view. ]); }
如果一切顺利,您现在应该在页面上有块构建器。不要忘记运行迁移。
4. 前端渲染
目前还没有太多工具,但基本的渲染工作如下
@foreach($page->blocks as $block) {!! \Sevendays\FilamentPageBuilder\Facades\BlockRenderer::renderBlock($block) !!} @endforeach
$page
是具有块的模式。
测试
尚未完成。
composer test
更新日志
有关最近更改的更多信息,请参阅更新日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
请查阅我们的安全策略,了解如何报告安全漏洞。
鸣谢
许可协议
MIT许可协议(MIT)。有关更多信息,请参阅许可文件。