muffin/slug

CakePHP ORM的Slugging支持

安装次数: 206,156

依赖项: 7

建议者: 1

安全: 0

星标: 35

关注者: 5

分支: 14

类型:cakephp-plugin

3.0.0 2023-09-27 03:48 UTC

This package is auto-updated.

Last update: 2024-08-27 05:42:00 UTC


README

Build Status Coverage Total Downloads License

CakePHP的Slugging

安装

使用Composer

composer require muffin/slug

使用CLI命令加载插件

./bin/cake plugin load Muffin/Slug

用法

要启用Slugging,请在initialize()方法中将此行为添加到您的表类中。

public function initialize(array $config): void
{
    //etc
    $this->addBehavior('Muffin/Slug.Slug', [
        // Optionally define your custom options here (see Configuration)
    ]);
}

请注意,Slug期望数据库列名为slug才能正常工作。如果您想使用其他列,请确保指定field配置选项。

搜索

如果您想通过其slug查找记录,则插件提供了自定义查找器。

// src/Controller/ExamplesController.php
$example = $this->Examples->find('slugged', slug: $slug);

配置

Slug提供了以下配置选项

  • field:存储slug的字段(列)名称。默认为slug
  • displayField:构建slug的字段(列)名称。默认为\Cake\ORM\Table::displayField()
  • separator:默认为-
  • replacements:要在生成slug之前自定义替换的字符(或字符串)的散列。
  • maxLength:slug的最大长度。默认为模式中定义的字段的限制(如果可能)。否则,没有限制。
  • slugger:实现Muffin\Slug\SlugInterface的类。默认为Muffin\Slug\Slugger\CakeSlugger
  • unique::告诉slug是否应该是唯一的。如果您想自定义生成唯一slug的方式,请将其设置为可调用的。默认为true
  • scope:在检查slug的唯一性时使用的额外条件。
  • implementedEvents:此行为监听的事件。默认为['Model.buildValidator' => 'buildValidator', 'Model.beforeSave' => 'beforeSave']。默认情况下,行为为displayField字段添加验证,以确保在创建记录时它们是必需的。如果您不想自动添加这些验证,可以将implementedEvents设置为仅为['Model.beforeSave' => 'beforeSave']
  • onUpdate:布尔值,指示是否在更新记录时更新slug,默认为false
  • onDirty:布尔值,指示是否在slug字段脏(有预置值或自定义值)时更新slug,默认为false

Sluggers

插件包含两个sluggers

CakeSlugger

CakeSlugger使用\Cake\Utility\Text::slug()生成slug。在行为配置中,您可以将以下slugger键设置为传递选项到Text::slug()$options参数。

'slugger' => [
    'className' => \Muffin\Slug\Slugger\CakeSlugger::class,
    'transliteratorId' => '<A valid ICU Transliterator ID here>'
]

ConcurSlugger

ConcurSlugger使用concur/slugify生成slug。您可以使用类似上面的配置数组将选项传递给Cocur\Slugify\Slugify的构造函数。

补丁与功能

  • 分支
  • 修改、修复
  • 测试 - 这很重要,所以它不会意外地出错
  • 提交 - 不要修改许可证、todo、版本等。(如果您更改了任何内容,请将它们提升为自己的提交,这样我可以在拉取时忽略它们)
  • 拉取请求 - 主题分支的额外积分

为确保您的PR被上游考虑,您必须遵循CakePHP编码标准。

错误与反馈

http://github.com/usemuffin/slug/issues

许可证

版权所有 (c) 2015-现在,Use Muffin,并许可在MIT许可证下。