haringsrob / 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和动态类型。
请注意,这是一个预生产包,许多功能可能仍然存在bug,并且可能无法与其他包(如翻译)一起工作。
方法和流程在第一次发布之前可能会改变,因此如果您使用它,请注意,Composer更新可能会破坏它。
如果您遇到问题,请提供pull request。
查看演示
安装
您可以通过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字段上增加了功能。
13-11-2023 预览现在可以通过配置进行选择。
- 预览可能会干扰块内配置的表单
- 预览将所有块字段设置为响应式,以进行“实时”预览部分
如果您同意,您可以通过以下方式启用预览
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
:这是您的块应该如何渲染。
默认生成器仅提供了一个'title'字段。
注意:所有字段默认可翻译。但是,您可以通过添加以下方法并使用字段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)。有关更多信息,请参阅许可证文件