remihin/filament-prefab

用于filament网站的预制件

1.0.1 2024-08-19 11:48 UTC

README

使用此模板构建新网站

安装

  1. 创建新项目 laravel new project-name
  2. 克隆此仓库
  3. 更新新项目的composer.json,将最低稳定性改为dev: "minimum-stability": "dev",
  4. composer require remihin/filament-prefab
  5. 安装所有模块
  • 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命令,从而加快更新推出速度。
  1. composer dump
  2. php artisan migrate
  3. 创建用户 php artisan make:filament-user 并按照提示操作
  4. php artisan db:seed
  5. 打开 docker-compose.yml 并将container_name替换为项目的名称
  6. docker compose up -d
  7. npm install && npm run dev

如何使用搜索

  1. IsSearchable接口添加到模型
  2. 实现所需方法。您的IDE将在添加接口时通知您。
  3. use Searchable特质添加到模型
  4. 通过在models数组中添加它并将键设置为模型,将值设置为包含可搜索列的数组,将配置添加到searchable.php配置中
  5. 还可以在searchable.php中的modules部分指定模块。这里的键是关系名称,值是可搜索字段的数组。要在模型上搜索模块,请将资源名称添加到模型数组中,就像添加列一样
  6. 在下面的示例中,页面在namecontent列中进行搜索,以及模块heroImage,其中titlecontent列是可搜索的
'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

  1. use Heroable特质添加到模型
  2. static::$model::heroableFields(),添加到资源的表单字段中

如何使用Employees

  1. use Employeeable特质添加到模型
  2. static::$model::employeeableFields(),添加到资源的表单字段中

如何使用Seoable en Ogable

  1. use Seoable特质添加到模型
  2. static::$model::seoFields(),添加到资源的表单字段中

如何使用Labels

  1. use Labelable特质添加到模型
  2. static::$model::labelableFields(),添加到资源的表单字段中

如何使用菜单

  1. 在应链接到菜单的模型上实现App/Contracts/Menuable
  2. 实现所需方法
  3. 菜单项资源将自动检测可用资源

如何使用标题和slugs

  1. 对于标题和别名,我们使用一个分叉并自行托管的计划 filament-title-with-slug
  2. 在表单中使用 TitleWithSlugInput 表单组件。这将处理标题和别名。两个字段都是必需的,别名字段会验证其唯一性。
  3. 有关更多文档,请参阅 motivo 存储库

如何使用模块块

  1. 简单地添加 BlockModule::make('content') 到任何资源中,其中参数是存储数据的列的名称。
  2. 'content' => 'array' 添加到模型的 casts 中
  3. 通过在 App/Filament/Plugins/Blocks 目录中创建一个新类并扩展 BaseBlock 模型来创建新的模块块。
  4. 可以在 blocks.php 配置文件中的 active 数组中注册新的模块块。
  5. 还有一个可切换的内容字段,它可以有嵌套字段。这些字段在 blocks.php 配置中的 toggle_content 数组中注册。
  6. 您还可以创建自己的模块块集。
    1. 首先在 blocks.php 配置文件中创建一个新数组。该数组的键不受限制。
    2. 当将模块块添加到资源时,您可以指定第二个参数,它是上一步中数组的关键字,例如 BlockModule::make('content', 'form-builder')

前端

  1. 访问 /blog 查看博客概述
  2. 访问 /blog/{blog:slug} 查看博客的显示页面

设置

  1. 对于设置,我们使用 spatie 插件
  2. 可选:将 filament 页面添加到正确的导航组 protected static ?string $navigationGroup = 'settings';
  3. 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(菜单构建器)