digitonic/photonic-filament
Composer 安装命令:
composer require digitonic/photonic-filament
包简介
The Photonic Field is a custom input component designed specifically for ingesting pictures and returning an appropriate CDN link for them
README 文档
README
A Filament 4 form component package for Laravel 12 that uploads image assets to a third‑party Photonic API, stores metadata in your database, and renders CDN image URLs. It does not persist the uploaded file locally.
We intend this package to be used with the Photonic Server API.
Features
- Optionally records each upload to a dedicated
photonictable. - Includes form component:
PhotonicImageField– composite helper (upload + preview + delete + meta info).
- Blade component
<x-photonic-filament::image>for rendering CDN URLs. - Helpers:
photonic_asset($filename, $assetUuid, $preset = 'original')URL builder.get_photonic_table_name()resolves the media table from config.
Installation
composer require digitonic/photonic-filament
1. Run the installer
php artisan photonic-filament:install
The installer will prompt you for the required Photonic values and will update both your .env and .env.example.
2. Publish and run migrations
php artisan vendor:publish --tag=photonic-filament-migrations php artisan migrate
This creates the photonic table in your database to store image metadata.
Optional: Publish config and views
If you want to customize the config or views:
php artisan vendor:publish --tag=photonic-filament-config php artisan vendor:publish --tag=photonic-filament-views
Configuration
All options live in config/photonic-filament.php and can be set via environment variables:
| Key | Env var | Default | Description |
|---|---|---|---|
| endpoint | PHOTONIC_ENDPOINT | https://photonic.test/api/v1 | Base API URL used by the Saloon connector. |
| cdn_endpoint | PHOTONIC_CDN_ENDPOINT | https://minio.herd.test/photonic | Base CDN URL for image rendering. |
| site_uuid | PHOTONIC_SITE_UUID | (null) | Site identifier sent with each upload. |
| api_key | PHOTONIC_API_KEY | (null) | Bearer API token. |
| file_field | PHOTONIC_FILE_FIELD | file | Multipart field name for the uploaded file. |
| response_key | PHOTONIC_RESPONSE_KEY | original_filename | JSON key inside data used to pull the stored filename. |
| media_model | (class) | Digitonic\Photonic\Filament\Models\Media::class |
Eloquent model used to persist uploads. |
Trait: UsesPhotonic
use Digitonic\Photonic\Filament\Concerns\UsesPhotonic; class Article extends Model { use UsesPhotonic; }
$article->photonicMedia(morphOne)$article->addPhotonicMedia($filename, $presetsArray)$article->removePhotonicMedia($mediaId)
Components
PhotonicImageField
use Digitonic\Photonic\Filament\Forms\Components\PhotonicImageField; PhotonicImageField::make();
Blade component
<x-photonic-filament::image :media="photonic_media_by_id($model->meta['background_image'])" />
Fluent API
The primary API is a facade-first fluent resolver:
use Digitonic\Photonic\Filament\Facades\Photonic; use Digitonic\Photonic\Filament\Enums\PresetEnum; $url = Photonic::for($mediaIdOrMediaModel) ->preset(PresetEnum::ORIGINAL) ->url(); // ?string $media = Photonic::for($mediaIdOrMediaModel) ->media(); // ?Media $info = Photonic::for($mediaIdOrMediaModel) ->preset('featured') ->info(); // ?PhotonicInfo
PresetEnum::AUTO is available when you want the API-generated auto WebP preset.
PhotonicInfo is immutable and provides:
idassetUuidfilenamepreseturlalttitledescriptioncaptionconfigcreatedAtupdatedAt
It supports toArray() and jsonSerialize().
When media cannot be resolved, url(), media(), and info() all return null.
Helper functions (Compatibility)
photonic_asset(string $filename, string $assetUuid, string $preset = 'original'): ?string;photonic_asset_by_id(int $mediaId, string $preset = 'original', int $cacheTtl = 3600): ?string;photonic_media_by_id(int $mediaId, int $cacheTtl = 3600): ?Media;forget_photonic_cache(int $mediaId): void;get_photonic_table_name(): string;
License
Copyright 2026, Digitonic
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License
digitonic/photonic-filament 适用场景与选型建议
digitonic/photonic-filament 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 341 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 01 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「filament」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 digitonic/photonic-filament 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 digitonic/photonic-filament 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 digitonic/photonic-filament 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Alfabank REST API integration
Database-driven onboarding for Filament: progress checklists and guided spotlight tours, translatable to any locale.
Laravel package for Accurate Online API integration.
Create-project starter for a Laravel application with the public Capell CMS foundation.
Shared RCX Laravel DataTables UI and configuration helpers.
Boot a Laravel project on any machine with one command: app:serve installs missing tools (PHP, Node, Composer, Herd, Docker), creates .env, sets up the database, runs migrations, builds assets, starts a queue worker and serves via Herd, Sail or artisan serve; app:down cleanly stops everything it sta
统计信息
- 总下载量: 341
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-15