Panini 是一个基于 filamentphp 和 wasabi json 的 cms

dev-main 2024-04-15 09:55 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

panini.png

这不是由 AI 生成并在 AI 的帮助下再次放大和压缩的标志。

Panini 是一个 FilamentPHP 包,专为那些希望在没有预定义结构限制的情况下自由构建自己的 CMS 的开发者设计。它不是一个 CMS;它是一个工具包,可以生成 Filament 资源——控制器、工厂、迁移、种子器和模型。亮点是页面管理器,允许您动态生成具有可定制表单字段的页面。拥抱前端独立性,创建您独特的定制内容管理体验,这一切都是为您项目的特定需求量身定制的。因为有时候,最好的 CMS 就是您自己构建的。

wtf

说实话,我不知道我建了什么,但它确实解决了我的问题,如果它也能解决你的问题,那就太棒了!😈

为什么叫 panini 呢?

也许因为它是一块三明治,你可以按你喜欢的方式建造它。

够了这种独白!让我们开始吧

在你开始之前,请确保你已经安装了带有默认 AdminPanelProvider 的 Filamentphp。

👉 Filamentphp 安装

此包假定 AdminPanelProvider 是默认的。

现在你可以通过 composer 安装此包

确保你在 composer.json 中将最小稳定性设置为 dev

    "minimum-stability": "dev"
composer require pratikkuikel/panini

使用以下命令发布和运行迁移

php artisan vendor:publish --tag="panini-migrations"
php artisan migrate

将 Panini 插件添加到 AdminPanelProvider。

use Pratikkuikel\Panini\PaniniPlugin;

        return $panel
            ...
            ->plugin(new PaniniPlugin())
            ...

要启用页面自动发现,更改

            ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')

TO

            ->discoverPages(in: app_path('Filament/Admin/Pages'), for: 'App\\Filament\\Admin\\Pages')

登录到您的 Admin Panel。

这就是你的原始 panini。

烤它,厨师 👨‍🍳

用法

⭐使用资源生成器生成资源

resource_generator.png

⭐页面管理器

page_manager.png

使用页面管理器

页面管理器目前支持两个字段,选择和文本输入。请随时添加更多。

属性是您链接到所选输入字段的函数。支持多个属性。

可以将多个字段添加到页面中,只需要点击 将字段添加到页面 按钮。

在创建页面管理器后,点击 生成 按钮。

您可以自定义生成的页面,在 app\Filament\Admin\Pages 目录中找到页面,在 resources\views\filament\admin\pages 目录中找到视图文件。

生成的字段可以下载、重用或共享。
以下是一个示例 Json 字段

[
    {
        "type": "Pratikkuikel\\Panini\\Filament\\Fields\\PaniniTextInput",
        "name": "name",
        "label": "name",
        "attributes": { "required": "true" }
    },
    {
        "type": "Pratikkuikel\\Panini\\Filament\\Fields\\PaniniSelect",
        "name": "option",
        "label": "Option",
        "attributes": { "required": "true" }
    }
]

获取页面数据

您可以使用以下方法获取数据

$data = PageManager::where('name','leslie-winkle')->first();

在这里,wasabi 将您的页面数据字段转换为属性。您可以使用 ✅ 访问它们

$data->name

而不是 ❌

$data->data['name'];

如果需要查询页面数据,请使用 Json Where Clauses

$data = PageManager::where('data->name','robot')->get();

测试

请原谅我,TDD 军队!目前没有测试,至少现在还没有。我会完成的,对吧?

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请查看我们的安全策略了解如何报告安全漏洞。

致谢

许可协议

MIT 许可协议(MIT)。请参阅许可文件获取更多信息。