2010-01-07 9 views
2

기사라는 모듈이 있습니다. 업로드 한 기사 목록이 표시됩니다. 색인에서 모든 기사가 나열됩니다.Symfony의 기사 정렬 목록

하지만 저자를 클릭하면 기사가 표시되는 페이지로 이동합니다 (예 : 기사/다니엘) 또는 출판과 같은 다른 분야에 의해. 분명히 쿼리를 작성하는 방법을 알고 있지만 이러한 것들을 위해 새로운 템플릿을 만들거나 인덱스 페이지에서 매개 변수를 변경하고이를 확인해야만하는지 이해할 수 없습니다.

답변

3

ORM 객체 경로를 사용하여 최소한의 코딩으로이 작업을 수행 할 수 있습니다. 나는 Doctrine에 있다고 가정 할 것이지만 Propel을 사용한다면 구현은 매우 유사해야한다. 아마도 sfPropelRoute를 클래스로 사용하는 것일 것이다.

author_articles: 
    url: /authors/:author 
    param: { module: articles, action: author } 
    class: sfDoctrineRoute 
    options: { model: Article, type: list } 

참고 : 응용 프로그램의 설정에서/사용자 정의 경로를 추가 routing.yml 나는 URL을 사용// 대신/기사의 저자는/그렇게이 경로는 작업 중 하나에 충돌하지 않습니다 요청 귀하의 기사 모듈하지만 귀하의 설정에서 선호하는 URL을 자유롭게 사용할 수 있습니다.

Symfony가 새로운 경로를 인식하도록 변경 사항을 저장 한 후 캐시를 지우십시오. 이 작업은 앱에/authors/*와 일치하는 모든 URL을 가져 와서 articles 모듈의 작성자 작업을 통해 전달하여 URL의 : author 매개 변수와 일치하는 개체의 목록을 생성합니다. 객체 경로는 위의 구성으로 자동으로이 작업을 수행합니다. 기사 모듈 추가의 저자 액션에서 지금

:

public function executeAuthor() { 
    $this->articles = $this->getRoute()->getObjects(); 
} 

지금 당신은 당신의 행동 템플릿 변수에 쿼리 결과가 있습니다. authorSuccess.php 템플릿에서 $ articles 배열을 반복합니다.

은 방금 동적으로 전체 URL을 생성하기 위해 만든 경로로 url_for 도우미를 사용할 수있는 저자의 이름을 사용하여 기본 목록에서이 경로에 링크 : 모든 작업이 완료

<a href="<?php echo url_for('@author_articles?author=' . $article['author']) ?>"><?php echo $article['author'] ?></a> 

합니다.

+0

큰 도움을 주셔서 감사합니다! 나는 새로운 문제를 가지고있다. 저자 이름이나 간행물이 흔히 한 단어 이상이거나 우호적이지 않은 문자를 사용하는 것을 보는 대신 슬러그를 사용하려고했지만 새로운 오류가 발생합니다. publication_articles : URL :/간행물/: publication_slug 클래스 : sfDoctrineRoute PARAM : {모듈 : 기사 : 액션, 출판} 옵션 :이 내 라우팅을 변경 {모델 : 기사 입력 : 목록} 그리고 기사 클래스에서 getPublicationSlug()를 만들었습니다. 하지만이 오류가 발생합니다 : "/ publications/: publication_slug"route에 누락 된 필수 매개 변수 (: publication_slug)가 있습니다. – Danny

+0

그 오류가 발생하면 url_for 또는 link_to를 사용하여 해당 경로를 사용하여 URL을 생성하려고합니다. 필자가 본 유일한 시간은 url_for ('my_route', $ obj)와 같은 객체 연결을 사용할 때입니다. 나는 성공적으로 작동시키지 못했고 온라인 가이드 (http://www.symfony-project.org/jobeet/1_2/Doctrine/en)에서 실제 작업 버전으로 제시되는 것들에 대해 꽤 많은 변형을 시도했다./05). 직접 매개 변수 삽입으로 연결해보십시오. url_for ('@ publication_articles? publication_slug ='. $ article-> getPublicationSlug()). 희망이 도움이됩니다. – nortron