定制 victorscatolon/filament-attachment-library 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

victorscatolon/filament-attachment-library

最新稳定版本:v1.0.4

Composer 安装命令:

composer require victorscatolon/filament-attachment-library

包简介

Easily manage file attachments across multiple models using a clean, polymorphic approach in your Filament app.

README 文档

README

Filament Attachment Library is a Laravel package that enables a polymorphic morphMany relationship to handle file attachments across multiple Eloquent models. Seamlessly integrated with Filament, it offers a clean, reusable, and consistent approach to managing file uploads through Filament resource forms and tables—making attachment handling simple and scalable across your application.

🚀 Installation

Install the package via Composer:

composer require victorscatolon/filament-attachment-library

Then publish the package's migration files:

php artisan vendor:publish --tag="filament-attachment-library-migrations"

⚙️ Configuration

  1. Create your model If you haven’t already, create a new Eloquent model:
php artisan make:model MyModel
  1. Enable attachments on your model Add the InteractsWithAttachments trait to your model to define the polymorphic relationship:
use VictorScatolon\FilamentAttachmentLibrary\Core\InteractsWithAttachments;

class MyModel extends Model
{
    use InteractsWithAttachments;
}
  1. Add the file upload field to your Filament form In your Filament resource's form method, include the AttachmentLibraryFileUpload component to allow users to upload files:
use VictorScatolon\FilamentAttachmentLibrary\Forms\Components\AttachmentLibraryFileUpload;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            AttachmentLibraryFileUpload::make(),
        ]);
}
  1. Enable attachment handling in the CreateRecord component To ensure attachments are saved properly when creating a new model, use the HandleAttachments trait in your CreateRecord class:

CreateRecord component

use VictorScatolon\FilamentAttachmentLibrary\Core\HandleAttachments;

class CreateMyModel extends CreateRecord
{
    use HandleAttachments;
}
  1. Enable attachment handling in the EditRecord component Likewise, use the HandleAttachments trait in your EditRecord class to manage attachments during updates:

EditRecord component

use VictorScatolon\FilamentAttachmentLibrary\Core\HandleAttachments;

class EditMyModel extends EditRecord
{
    use HandleAttachments;
}

🗂️ Relation Managers

To use the Attachment Library within a Relation Manager form, follow these steps:

  1. Use the HandleAttachments trait Add the HandleAttachments trait to your RelationManager class:
use VictorScatolon\FilamentAttachmentLibrary\Core\HandleAttachments;

class MyRelationManager extends RelationManager
{
    use HandleAttachments;
}
  1. Set dehydrated(true) on the file upload field Make sure the attachment field is dehydrated so that the file data is available during form processing:
public function form(Form $form): Form
{
    return $form
        ->schema([
            AttachmentFileUpload::make()->dehydrated(true),
        ]);
}
  1. Add a custom create action to the table You’ll need to define a custom CreateAction with an after() callback to manually handle the attachments after the record is created:
public function table(Table $table): Table
{
    return $table->headerActions([
            Tables\Actions\CreateAction::make()
                ->after(function ($record, $data) {
                    $attachments = $data['attachments'];
                    $this->handleAttachments($record, $attachments);
                }),
        ]);
}

✅ Note: Make sure the field name in the $data array matches the field key used in the AttachmentLibraryFileUpload::make() definition.

📦 Changelog

For a detailed list of recent changes, updates, and improvements, please refer to the Changelog.

🤝 Contributing

Contributions are welcome! To get started, please read the Contribution Guide.

👨‍💻 Credits

Developed and maintained by @victorscatolon.
Thanks to all the amazing contributors who help improve this package.

📄 License

This project is open-source software licensed under the MIT License.

统计信息

  • 总下载量: 105
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-04-11