2011-04-28 4 views
0

기사 모델과 설명 모델이 있다고 가정 해 봅시다.심포니에서 액션 재사용하기

Article: 
    columns: 
    body: text 

Comment: 
    columns: 
    article_id: integer 
    message: text 
    relations: 
    Article: 
     local: article_id 
     foreign: id 
     foreignAlias: Comments 

그리고 우리는 "기사"와 "주석"경로 컬렉션을 기반으로이 개 모델을 생성은 :

article: 
    class: sfDoctrineRouteCollection 
    options: 
    module: article 
    model: Article 

comment: 
    class: sfDoctrineRouteCollection 
    options: 
    module: comment 
    model: Comment 

그래서, 우리는 기본적으로 각 모델에 대한 2 cruds 있습니다. 이제 기사의 show 액션에서 기사를 표시하고 싶습니다. 관련 주석과 주석을 추가하는 양식입니다.

class articleActions extends sfActions 
{ 
    public function executeShow(sfWebRequest $request) 
    { 
    $this->article = $this->getRoute()->getObject(); 
    $this->comments = Doctrine::getTable('Comment')->findAllByArticleId ($this->article->getId()); 
    $this->form = new CommentForm(); 

    } 
} 

문제는 내가 다시 사용할 수있는 방법입니다 코멘트/새로운 코멘트/기사/show 액션에 주석을 게시 할 때 작업을 만들? 이것이 코드를 구성하는 올바른 방법입니까?

+0

정확하게/new와 comment/create를 참조하고 있습니다. – Tom

+0

모듈/액션 – Dziamid

+0

알겠습니다. 음, 최소한 주석 모델 내에서 주석 작성 코드를 이동하여 어디에서나 액세스 할 수있게됩니다. $ comment-> saveThisCommentThroughMyModel ($ data). 위에 게시 한 내용을 기반으로 말할 내용이 무엇인지 모릅니다. – Tom

답변

1

작업을 다시 사용하려면 구성 요소가 필요할 수도 있습니다. 구성 요소는 부분 코드와 유사하지만 구성 요소에 논리를 추가해야 할 때 (예 : comment/new 또는 comment/create 동작에 사용하는 코드와 같이) 사용합니다.

구성 요소는 동작과 비슷하지만 을 제외하고는 훨씬 빠릅니다. 구성 요소의 논리는 sfComponents에서 상속되며 actions/components.class.php 파일에 으로 유지됩니다. 프리젠 테이션은 부분적으로 에 보관됩니다.

check here the docs of Symfony :

워드 프로세서는 심포니 1.2이다, 나는 심포니 1.4

문제없이 난 당신이 찾고있는 구성 요소가 정말 확신 것을 사용합니다.