Doctrine orm 创建自动从以年为前缀的条令生成slug

Doctrine orm 创建自动从以年为前缀的条令生成slug,doctrine-orm,slug,symfony-2.4,doctrine-extensions,Doctrine Orm,Slug,Symfony 2.4,Doctrine Extensions,我想在我的Symfony 2.4应用程序中自动生成一个slug,其中slug根据记录创建的年份是唯一的。我正在使用DoctrineExtensions 对于我的博客记录,我希望路径是/blog/{year}/{slug} 假设我有这两张唱片 id:1 标题:我的博客标题 创建日期:2013-08-1418:48:21 id:2 标题:我的博客标题 创建日期:2014-02-01 17:12:10 我希望这两个slug都是我的博客标题,因为它们是基于createdAt的唯一记录 所以我的两条路线是

我想在我的Symfony 2.4应用程序中自动生成一个slug,其中slug根据记录创建的年份是唯一的。我正在使用DoctrineExtensions

对于我的博客记录,我希望路径是
/blog/{year}/{slug}

假设我有这两张唱片

id:1
标题:我的博客标题
创建日期:2013-08-1418:48:21

id:2
标题:我的博客标题
创建日期:2014-02-01 17:12:10

我希望这两个slug都是
我的博客标题
,因为它们是基于createdAt的唯一记录

所以我的两条路线是

/blog/2013/my blog title
/博客/2014/我的博客标题

然而,我似乎无法让它发挥作用:

这是我的orm.yml的相关部分

fields:
    title:
        type: text
    slugBase:
        type: text
        gedmo:
            slug:
                unique: false
                dateFormat: "Y"
                fields:
                    - createdAt
    slug:
        type: text
        gedmo:
            slug:
                unique_base: slugBase
                fields:
                    - title
    createdAt:
        type: datetime
        gedmo:
            timestampable:
                on: create
字段:
标题:
类型:文本
鼻涕虫:
类型:文本
gedmo:
鼻涕虫:
唯一_基:createdAt
领域:
-头衔
创建数据:
类型:日期时间
gedmo:
时间标记:
打开:创建

这是可行的,因为createdAt对于所有记录都是唯一的,因为我的任何两个记录几乎不可能在同一秒内具有相同的创建日期

因此,如果我添加第三条记录:

id:3
标题:我的博客标题
创建日期:2014-03-02 17:12:10

它允许我使用相同的slug-
我的博客标题

在我的orm.yml文件中,我希望能够执行以下操作

unique\u base:createdAt(“Y”)

因此,只有我创建日期的年份被用作基准,因此,如果记录在不同的年份,我可以有相同的slug,但如果记录在同一年,则不会有相同的slug

我知道我能把日期拖进子弹里

2014我的博客标题
,但它需要看起来像
2014/我的博客标题

有人能帮忙吗


非常感谢

我终于想出了一个解决办法,或者说这是正确的方法

因为我需要unique_base来引用我创建记录的年份,而不是完整的时间戳,所以我创建了一个名为slugBase的新字段

slugBase不是唯一的,可以从createdAt字段中使用格式为“Y”的slugabble。因此,如果在2014-03-02上创建记录,slugBase将自动设置为“2014”

所以现在,当标题更改时,slug将只根据标题创建一个slug,使用slugBase作为唯一的_基

这是我的orm.yml

fields:
    title:
        type: text
    slugBase:
        type: text
        gedmo:
            slug:
                unique: false
                dateFormat: "Y"
                fields:
                    - createdAt
    slug:
        type: text
        gedmo:
            slug:
                unique_base: slugBase
                fields:
                    - title
    createdAt:
        type: datetime
        gedmo:
            timestampable:
                on: create
这很好,因为每次创建/更新记录时,我不必手动执行任何操作

但很明显,在查找记录时,我必须按slugBase和slug进行搜索。所以我的新路线是
/blog/{slugBase}/{slug}