qopiku/filament-sqids
Composer 安装命令:
composer require qopiku/filament-sqids
包简介
A Laravel Filament package that automatically encodes and decodes model IDs using sqids/sqids for improved security and aesthetics.
README 文档
README
Filament Sqids is a Laravel package that automatically encodes and decodes model IDs using sqids/sqids. By replacing numerical IDs with obfuscated Sqids, this package not only improves the aesthetics of your URLs but also provides an extra layer of security.
Table of Contents
Features
- Automatic Sqids Encoding: Transform model IDs in your URLs (e.g.
/admin/users/1/editbecomes/admin/users/86Rf07xd4z/edit). - Automatic Sqids Decoding: Middleware decodes Sqids back to real IDs when processing requests.
- Model Trait (
HasSqids): Easily apply Sqids to any Filament model. - Filament Plugin (
SqidsPlugin): Seamlessly integrate with Filament panels via$panel->plugin(SqidsPlugin::make()). - Customisable Sqids Config: Configure custom minimum length and alphabet via
filament-sqids.php. - Blade Directive (
@sqids($model)): Helper directive for generating Sqids in your Blade templates. - Artisan Command (
install:sqids): Simplifies setup by publishing configuration files and verifying dependencies.
Installation
Install the package via Composer:
composer require qopiku/filament-sqids
If you wish to customise the configuration, run the install command:
php artisan install:filament-sqids
This command will publish the configuration file (config/filament-sqids.php) to your Laravel application.
Configuration
After installation, you can adjust your settings in the config/filament-sqids.php file. You may set:
- min_length: The minimum length for the generated Sqids.
- alphabet: The alphabet used to generate the Sqids.
Usage
Using the Model Trait
Simply include the HasSqids trait in your model to enable Sqids functionality:
use Qopiku\FilamentSqids\Traits\HasSqids; class User extends Authenticatable { use HasSqids; // ... }
You can then retrieve the Sqids for a model instance:
$user = User::find(1); echo $user->getSqids();
You can query by Sqids for a model:
$user = User::findSqids($sqids); $users = User::whereSqids($sqids)->get();
Blade Directive
In your Blade templates, generate a Sqids easily with the provided directive:
@sqids($user)
This will output the encoded ID of the model.
Using the Plugin (Recommended)
The simplest way to enable Sqids in your Filament panel is to use the SqidsPlugin:
use Filament\Panel; use Filament\PanelProvider; use Qopiku\FilamentSqids\Plugin\SqidsPlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel ->plugin(SqidsPlugin::make()); } }
Setup the Middleware Manually
If you prefer not to use the plugin system, you can apply the middleware directly:
Via Panels
Include it in the panel's middleware stack:
use Filament\Panel; use Filament\PanelProvider; use Qopiku\FilamentSqids\Middleware\FilamentSqidsMiddleware; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel ->middleware([ FilamentSqidsMiddleware::class, // Decodes Sqids for all routes in this panel // ...existing code... ]); } }
Via Specific Resources
Apply the middleware to specific resources only:
use Filament\Resources\Resource; class UserResource extends Resource { public static array|string $routeMiddleware = [ 'filament-sqids', // Ensures Sqids are decoded for this resource's routes ]; }
Testing
The package includes a suite of tests to cover its key functionality:
- Feature Tests: Validate that URLs are correctly rewritten and that routes work as expected.
- Unit Tests: Ensure that the
SqidsManager, middleware, and helper functions behave correctly.
To run the tests, simply execute:
vendor/bin/phpunit
Contributing
Contributions are welcome! Feel free to open issues or submit pull requests if you have suggestions or improvements.
Licence
This package is open-sourced software licensed under the MIT licence.
Enjoy building secure and aesthetically pleasing URLs with Filament Sqids!
qopiku/filament-sqids 适用场景与选型建议
qopiku/filament-sqids 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 302 次下载、GitHub Stars 达 2, 最近一次更新时间为 2025 年 08 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「security」 「url」 「encoding」 「laravel」 「filament」 「sqids」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 qopiku/filament-sqids 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 qopiku/filament-sqids 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 qopiku/filament-sqids 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
integration of the Panda encoding services into the Symfony2 Framework
FileBundle manages uploads and manipulations of files for the Kitpages CMS Bundle
A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.
Provide a way to secure accesses to all routes of an symfony application.
A PHP Library that allows you to decode ASN.1 CMS using Basic Encoding Rules (BER).
Easy URL rewrites in your Laravel application
统计信息
- 总下载量: 302
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 22
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-18