定制 swindon/filament-hashids 二次开发

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

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

swindon/filament-hashids

Composer 安装命令:

composer require swindon/filament-hashids

包简介

A Laravel Filament package that automatically encodes and decodes model IDs using vinkla/hashids for improved security and aesthetics.

README 文档

README

Filament Hashids is a Laravel package that automatically encodes and decodes model IDs using vinkla/hashids. By replacing numerical IDs with obfuscated Hashids, this package not only improves the aesthetics of your URLs but also provides an extra layer of security.

Table of Contents

Features

  • Automatic Hashid Encoding: Transform model IDs in your URLs (e.g. /admin/users/1/edit becomes /admin/users/0l8q7xpnm4k63jo9/edit).
  • Automatic Hashid Decoding: Middleware decodes Hashids back to real IDs when processing requests.
  • Model Trait (HasHashid): Easily apply Hashids to any Filament model.
  • Filament Plugin (HashidsPlugin.php): Seamlessly integrate with Filament, overriding resource routes and actions.
  • Customisable Hashid Config: Configure custom salts, minimum length, and alphabet via filament-hashids.php.
  • Blade Directive (@hashid($model)): Helper directive for generating Hashids in your Blade templates.
  • Artisan Command (install:hashids): Simplifies setup by publishing configuration files and verifying dependencies.

Installation

Install the package via Composer:

composer require swindon/filament-hashids

If you wish to customise the configuration, run the install command:

php artisan install:filament-hashids

This command will publish the configuration file (config/filament-hashids.php) to your Laravel application.

Configuration

After installation, you can adjust your settings in the config/filament-hashids.php file. You may set:

  • salt: A custom salt value (defaults to your APP_KEY).
  • min_length: The minimum length for the generated Hashid.
  • alphabet: The alphabet used to generate the Hashid.

Usage

Using the Model Trait

Simply include the HasHashid trait in your model to enable Hashid functionality:

use Swindon\FilamentHashids\Traits\HasHashid;

class User extends Authenticatable
{
    use HasHashid;
    
    // ...
}

You can then retrieve the Hashid for a model instance:

$user = User::find(1);
echo $user->getHashid();

You can query by Hashid for a model:

$user = User::findHashId($hashId);
$users = User::whereHashId($hashId)->get();

Blade Directive

In your Blade templates, generate a Hashid easily with the provided directive:

@hashid($user)

This will output the encoded ID of the model.

Setup the Middleware

Middleware ensures that incoming requests with Hashids are automatically decoded into their corresponding numerical IDs. You can set it up in two ways:

Via Panels

To apply the middleware globally to a Filament panel, include it in the panel's middleware stack:

use Filament\Panel;
use Filament\PanelProvider;
use Swindon\FilamentHashids\Middleware\FilamentHashidsMiddleware;

class AdminPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            ->middleware([
                FilamentHashidsMiddleware::class, // Decodes Hashids for all routes in this panel
                // ...existing code...
            ]);
    }
}

Via Specific Resources

If you want to apply the middleware to specific resources only, you can define it in the resource's $routeMiddleware property:

use Filament\Resources\Resource;

class UserResource extends Resource
{
    public static array|string $routeMiddleware = [
        'filament-hashids', // Ensures Hashids 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 HashidsManager, 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 Hashids!

swindon/filament-hashids 适用场景与选型建议

swindon/filament-hashids 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 356 次下载、GitHub Stars 达 3, 最近一次更新时间为 2025 年 04 月 02 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「security」 「url」 「encoding」 「laravel」 「hashids」 「filament」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 swindon/filament-hashids 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 swindon/filament-hashids 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

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

GitHub 信息

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

其他信息

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