68publishers / doctrine-sluggable
Doctrine Sluggable 扩展
v0.5.1
2023-01-06 00:15 UTC
Requires
- php: ^7.1 || ^8.1
- behat/transliterator: ^1.2
- doctrine/orm: ^2.11
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.19
- mockery/mockery: ^1.2
- nette/di: ^2.4
- nette/tester: ^1.7
- roave/security-advisories: dev-latest
Suggests
- nette/di: For integration into Nette Framework
This package is auto-updated.
Last update: 2024-09-06 03:59:26 UTC
README
⚠️ 警告!此包没有活跃的支持,它仅存在于作者的历史需求。
Doctrine Sluggable
🔤 Doctrine Sluggable 扩展!
简单使用和集成到 Nette 框架。
安装
安装 68publishers/doctrine-sluggable
的最佳方式是使用 Composer
$ composer require 68publishers/doctrine-sluggable
然后像这样将 SluggableEventSubscriber
注册到 EventManager
<?php /** @var Doctrine\ORM\EntityManager $em */ /** @var Doctrine\Common\Annotations\Reader $reader */ $subscriber = new SixtyEightPublishers\DoctrineSluggable\SluggableEventSubscriber( new SixtyEightPublishers\DoctrineSluggable\DefinitionStorage\AnnotationSluggableDefinitionStorage($reader) ); $em->getEventManager()->addEventSubscriber($subscriber);
但是,如果你使用 Nette
框架,最好使用编译器扩展
extensions: sluggable: SixtyEightPublishers\DoctrineSluggable\Bridge\Nette\SluggableExtension
使用方法
示例实体
<?php use Doctrine\ORM\Mapping as ORM; use SixtyEightPublishers\DoctrineSluggable\Annotation as Sluggable; /** * @ORM\Entity */ class Product { /** * @ORM\Column(type="string", length=255) * * @var string */ private $name; /** * @ORM\ManyToOne(targetEntity="Category") * * @var Category */ private $category; /** * @Sluggable\Slug( * strategy="SixtyEightPublishers\DoctrineSluggable\Strategy\GenerateOnInsertStrategy", * strategyOptions={ * "fields": {"name"}, * "checkOnUpdate": true * }, * finder="SixtyEightPublishers\DoctrineSluggable\Finder\FieldBasedSimilarSlugFinder", * finderOptions={ * "field": "category", * "type": "outer" * }, * transliterator="SixtyEightPublishers\DoctrineSluggable\Transliterator\CamelCaseTransliterator" * ) * @ORM\Column(type="string", length=255) * * @var string */ private $slug; /** * @return string */ public function getSlug() : string { # slug is generated on EntityManager's onFlush event if (NULL === $this->slug) { throw new RuntimeException('Slug is not set.'); } return $this->slug; } }
选项
@todo
贡献
在提交任何更改之前,不要忘记运行
$ vendor/bin/php-cs-fixer fix --config=.php_cs.dist -v --dry-run
并
$ vendor/bin/tester ./tests