2014-03-13 6 views
1

내 Symfony 2.4 애플리케이션에서 Doctrine으로부터 슬러그를 자동 생성하고 싶습니다. 슬러그는 레코드가 생성 된 연도에 따라 고유합니다. DoctrineExtensions를 사용하고 있습니다. 내 블로그 레코드에 대한Create는 Doctrine에서 슬래그를 자동으로 생성합니다.

내가 /blog/{year}/{slug}

그래서, 나는이 두 기록

id: 2 title: My Blog Title createdAt: 2014-02-01 17:12:10

id: 1 title: My Blog Title createdAt: 2013-08-14 18:48:21

내가 모두 굼벵이가 my-blog-title되고 싶어요이 있다고 할 수있는 경로가되고 싶어 그들은 createdAt를 기반으로 한 고유 한 레코드입니다.

,403,210 그래서 내 두 노선들은 후 나는이 작업을 얻을 수있을 것 같지 않는, 그러나

/blog/2013/my-blog-title /blog/2014/my-blog-title

것 : 여기

내 orm.yml의와 관계있는 부분입니다

createdAt는 내 레코드 중 두 레코드가 동일한 초에 똑같은 날짜를 갖는 것이 거의 불가능하기 때문에 모든 레코드에서 고유합니다.

그래서 내가 세 번째 레코드를 추가하는 경우 : 그것은 나 같은 슬러그 사용할 수 있습니다

id: 3 title: My Blog Title createdAt: 2014-03-02 17:12:10

- 내가

처럼 뭔가를 할 수 있도록하려면 내 orm.yml 파일에서 my-blog-title

을 내 만든 날짜의

unique_base: createdAt("Y")

그래서 만 년은 기본으로 사용, 그래서 내가있다 기록이 다른 해에있는 경우 동일한 슬러그를 가질 수 있지만 기록이 같은 해에있는 경우 동일한 슬러그가 아닐 수 있습니다.

나는 내가 슬러그 자체

2014-my-blog-title에 날짜를 당겨 수 있습니다 알고 있지만 다른 사람이 도와 주 시겠어요 2014/my-blog-title

처럼 보일 필요가 있겠습니까?

대단히 감사합니다 !!!

답변

1

마침내 해결 방법을 찾았습니다. 아니면 올바른 방법일까요?

전 고유 타임 스탬프가 아닌 레코드를 생성 한 연도를 참조하려면 unique_base가 필요하므로 slugBase라는 새로운 필드를 만들었습니다.

slugBase는 고유하지 않으며 "Y"형식의 createdAt 필드에서 slugabble입니다.레코드가 2014년 3월 2일 slugBase에 생성되어 경우에 따라서 자동으로 설정됩니다에 "2014"그래서 지금, 제목 변경, 슬러그 만 unique_base로 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}

입니다.