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=blogphp artisan prefab:filament --module=hero-imagephp artisan prefab:filament --module=newsphp artisan prefab:filament --module=storyphp artisan prefab:filament --module=employee- 注意:在模块初始推出后更新模块时,请添加
--force以覆盖本地文件。另外,可以添加--no-shell以防止执行shell命令,从而加快更新推出速度。
composer dumpphp artisan migrate- 创建用户
php artisan make:filament-user并按照提示操作 php artisan db:seed- 打开
docker-compose.yml并将container_name替换为项目的名称 docker compose up -dnpm 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/filamentawcodes/filament-curator(媒体管理器)solution-forest/filament-tree(菜单构建器)