remihin / filament-prefab
用于filament网站的预制件
1.0.1
2024-08-19 11:48 UTC
Requires
- php: ^8.2
- ext-json: *
- illuminate/filesystem: ^11.0
- illuminate/support: ^11.0
- illuminate/validation: ^11.0
Requires (Dev)
- deployer/deployer: v7.0.0-rc.8
- friendsofphp/php-cs-fixer: ^3.8
This package is auto-updated.
Last update: 2024-09-19 11:59:46 UTC
README
使用此模板构建新网站
安装
- 创建新项目
laravel new project-name
- 克隆此仓库
- 更新新项目的
composer.json
,将最低稳定性改为dev:"minimum-stability": "dev",
composer require remihin/filament-prefab
- 安装所有模块
php artisan prefab:filament --module=base --force
- 耐心等待shell脚本,需要强制覆盖用户模型
php artisan prefab:filament --module=blog
php artisan prefab:filament --module=hero-image
php artisan prefab:filament --module=news
php artisan prefab:filament --module=story
php artisan prefab:filament --module=employee
- 注意:在模块初始推出后更新模块时,请添加
--force
以覆盖本地文件。另外,可以添加--no-shell
以防止执行shell命令,从而加快更新推出速度。
composer dump
php artisan migrate
- 创建用户
php artisan make:filament-user
并按照提示操作 php artisan db:seed
- 打开
docker-compose.yml
并将container_name替换为项目的名称 docker compose up -d
npm install && npm run dev
如何使用搜索
- 将
IsSearchable
接口添加到模型 - 实现所需方法。您的IDE将在添加接口时通知您。
- 将
use Searchable
特质添加到模型 - 通过在
models
数组中添加它并将键设置为模型,将值设置为包含可搜索列的数组,将配置添加到searchable.php
配置中 - 还可以在
searchable.php
中的modules
部分指定模块。这里的键是关系名称,值是可搜索字段的数组。要在模型上搜索模块,请将资源名称添加到模型数组中,就像添加列一样 - 在下面的示例中,页面在
name
和content
列中进行搜索,以及模块heroImage
,其中title
和content
列是可搜索的
'models' => [ Page::class => [ 'name', 'content', 'heroImage', ], ], 'modules' => [ 'heroImage' => [ 'title', 'content', ], ],
Elasticsearch
搜索模块使用elasticsearch,请确保在您的.env
中将SCOUT_DRIVER
设置为elastic
要同步模型到elasticsearch,运行php artisan search:sync
。
此项目还包含一个可以使用laravel sail执行的docker文件。此docker文件中elasticsearch的默认端口为9298。要允许您的本地项目与此docker文件通信,请在.env
中添加ELASTIC_HOST=localhost:9298
如何使用Hero Images
- 将
use Heroable
特质添加到模型 - 将
static::$model::heroableFields(),
添加到资源的表单字段中
如何使用Employees
- 将
use Employeeable
特质添加到模型 - 将
static::$model::employeeableFields(),
添加到资源的表单字段中
如何使用Seoable en Ogable
- 将
use Seoable
特质添加到模型 - 将
static::$model::seoFields(),
添加到资源的表单字段中
如何使用Labels
- 将
use Labelable
特质添加到模型 - 将
static::$model::labelableFields(),
添加到资源的表单字段中
如何使用菜单
- 在应链接到菜单的模型上实现
App/Contracts/Menuable
。 - 实现所需方法
- 菜单项资源将自动检测可用资源
如何使用标题和slugs
- 对于标题和别名,我们使用一个分叉并自行托管的计划 filament-title-with-slug
- 在表单中使用
TitleWithSlugInput
表单组件。这将处理标题和别名。两个字段都是必需的,别名字段会验证其唯一性。 - 有关更多文档,请参阅 motivo 存储库
如何使用模块块
- 简单地添加
BlockModule::make('content')
到任何资源中,其中参数是存储数据的列的名称。 - 将
'content' => 'array'
添加到模型的 casts 中 - 通过在
App/Filament/Plugins/Blocks
目录中创建一个新类并扩展BaseBlock
模型来创建新的模块块。 - 可以在
blocks.php
配置文件中的active
数组中注册新的模块块。 - 还有一个可切换的内容字段,它可以有嵌套字段。这些字段在
blocks.php
配置中的toggle_content
数组中注册。 - 您还可以创建自己的模块块集。
- 首先在
blocks.php
配置文件中创建一个新数组。该数组的键不受限制。 - 当将模块块添加到资源时,您可以指定第二个参数,它是上一步中数组的关键字,例如
BlockModule::make('content', 'form-builder')
- 首先在
前端
- 访问
/blog
查看博客概述 - 访问
/blog/{blog:slug}
查看博客的显示页面
设置
- 对于设置,我们使用 spatie 插件。
- 可选:将 filament 页面添加到正确的导航组
protected static ?string $navigationGroup = 'settings';
- 在
AppServiceProvider
中添加设置以访问 blade 中的变量
最大的待办事项
- 更新到 Laravel 11
- 别名
- 重新执行 SEO 作为字段而不是特性 (?)
- Cookie 允许
Base 模块
- 类似 formbuilder 的东西(替代方法?) (https://filamentphp.com/plugins/lara-zeus-bolt)?
联系模块
- 模块块模块(WIP)
模块块模块
- 电子邮件发送 (?)
工作警报
- 搜索功能
搜索模块
- 捐赠模块
- 重定向和死链跟踪器
- 添加主页的路由
- 翻译
"复制粘贴" 待办事项
- 员工
- 位置
- 新闻
- 服务
- 故事
- 空缺
- 设置
- 主要任务
依赖关系
filamentphp/filament
awcodes/filament-curator
(媒体管理器)solution-forest/filament-tree
(菜单构建器)