lanin/laravel-hashids

将Hashids集成到Laravel中。

0.1.1 2015-10-16 08:28 UTC

This package is auto-updated.

Last update: 2024-09-07 20:38:47 UTC


README

轻松将Laravel与Hashids集成,支持完整模型。

虽然有很多包可以将Hashids与Laravel集成,但它们都只是提供了门面和添加了一些语法糖。

但是,关于模型绑定和自动ID解析呢?这个包为您提供了一切。您只需安装它即可!

安装

需要PHP 5.4+或HHVM 3.3+,Composer和Laravel 5.0+。

要获取Laravel-Hashids的最新版本,只需通过Composer安装即可。

$ composer require lanin/laravel-hashids

安装Laravel-Hashids后,您需要注册服务提供者。打开 config/app.php 并将以下内容添加到 providers 键中。

Lanin\Laravel\Hashids\HashidsServiceProvider::class,

最后一步是将 \Lanin\Laravel\Hashids\UseHashidsRouter 特性添加到您的 App\Http\Kernel 中。这将强制Laravel使用包路由来分发路由。

namespace App\Http;

class Kernel extends HttpKernel
{
    use \Lanin\Laravel\Hashids\UseHashidsRouter;
    
    ...
}

您还可以注册 HashidsFacade 以方便访问Hashids方法。

'Hashids' => Lanin\Laravel\Hashids\HashidsFacade::class,

使用方法

您无需修改路由或HTML即可使其运行。如果您在HTML中使用模型绑定和路由解析,所有内容将自动转换。

绑定

安装后,路由器的 model 方法将绑定占位符ID到模型,并自动支持hashids并将它们转换为内部整数ID。

路由

如果您将hash id传递到URL中,它将轻松解析为关联模型。但是,如何在您的HTML输出中替换ID呢?有两种方式。一切取决于您如何形成URL。

如果您喜欢手动形成,包提供了Blade辅助方法 @hashids($id),它将您的ID转换为哈希字符串。

<a href="/posts/@hashids($post->id)">{{$post->title}}</a>

但是,这种方法很繁琐。我更喜欢使用Laravel的出色功能,该功能可以自动从模型中提取ID并将它们插入到您的URL中。示例

route('page.show', $page);
url('page', ['id' => $page]);

这些方法已更新以处理Hashids。它们将自动将模型中的整数ID替换为Hashids。

如果由于某种原因您不想转换它们,只需在您的模型中实现 \Lanin\Laravel\Hashids\DoNotUseHashids 接口即可。

配置

默认情况下,包将使用您的 APP_KEY 作为盐并使用5个字符长度的哈希。如果您想覆盖它,发布hashids配置并编辑 config/hahshids.php

$ php artisan vendor:publish

贡献

请随时fork此包,并通过提交拉取请求来增强功能进行贡献。