首页 > 解决方案 > 来自关系的 Gedmo Slug 作为后缀

问题描述

我需要从相关字段生成 slug 作为后缀,但我只能将其作为前缀。我已将 SlugHandler 配置如下:

/**
     * @ORM\Column(type="string", length=90, unique=true)
     * @Gedmo\Slug(handlers={
     *      @Gedmo\SlugHandler(class="Gedmo\Sluggable\Handler\RelativeSlugHandler", options={
     *          @Gedmo\SlugHandlerOption(name="relationField", value="category"),
     *          @Gedmo\SlugHandlerOption(name="relationSlugField", value="name"),
     *          @Gedmo\SlugHandlerOption(name="separator", value="-"),
     *          @Gedmo\SlugHandlerOption(name="urilize", value="true"),
     *      })
     * }, fields={"title"})
     */
    private $slug;

该代码创建了以下 slug:“category-name-title”,但我需要它作为“title-category-name”。

这有可能实现吗?

标签: symfonydoctrine-ormdoctrine

解决方案


我认为现有的处理程序不可能做到这一点。但是您始终可以创建和使用自己的自定义RelativeSlugHandler

class MyRelativeSlugHandler extends RelativeSlugHandler {
    public function transliterate($text, $separator, $object) {
        // change this method implementation as you like
    }
}

在注释中替换class为您的自定义路径MyRelativeSlugHandler


推荐阅读