【发布时间】:2014-04-18 21:00:05
【问题描述】:
我想在我的 Symfony 2.4 应用程序中从 Doctrine 自动生成一个 slug,其中 slug 根据创建记录的年份是唯一的。我正在使用 DoctrineExtensions。
对于我的博客记录,我希望路由为 /blog/{year}/{slug}
假设我有这两条记录
id: 1
title: My Blog Title
createdAt: 2013-08-14 18:48:21
id: 2
title: My Blog Title
createdAt: 2014-02-01 17:12:10
我希望两个 slug 都是 my-blog-title,因为它们是基于 createdAt 的唯一记录
所以我的两条路线将是
/blog/2013/my-blog-title
/blog/2014/my-blog-title
但是,我似乎无法让它工作:
这是我的 orm.yml 的相关部分
fields:
title:
type: text
slug:
type: text
gedmo:
slug:
unique_base: createdAt
fields:
- title
createdAt:
type: datetime
gedmo:
timestampable:
on: create
这行得通,因为 createdAt 对于所有记录都是唯一的,因为我的任何两条记录几乎不可能有相同的创建日期直到完全相同的秒。
所以如果我添加第三条记录:
id: 3
title: My Blog Title
createdAt: 2014-03-02 17:12:10
它让我可以使用相同的 slug - my-blog-title
在我的 orm.yml 文件中,我希望能够执行类似的操作
unique_base: createdAt("Y")
所以只有我创建日期的年份作为基础,所以如果记录在不同年份,我可以有相同的 slug,但如果记录在同一年,则不能有相同的 slug。
我知道我可以将日期放入 slug 本身
2014-my-blog-title 但它需要看起来像 2014/my-blog-title
有人可以帮忙吗?
非常感谢!!!
【问题讨论】:
标签: doctrine-orm slug symfony-2.4 doctrine-extensions