定制 qopiku/filament-sqids 二次开发

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

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

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/edit becomes /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 我们能提供哪些服务?
定制开发 / 二次开发

基于 qopiku/filament-sqids 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

  • Stars: 2
  • Watchers: 0
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-08-18