muffin / slug
CakePHP ORM的Slugging支持
3.0.0
2023-09-27 03:48 UTC
Requires
- cakephp/orm: ^5.0
Requires (Dev)
- cakephp/cakephp: 5.0
- cocur/slugify: ^4.3
- phpunit/phpunit: ^10.1
README
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许可证下。