2013-11-23 5 views
0

symfony2에서 처음으로 웹 응용 프로그램을 작성하고 있습니다. 방금 ​​서버 측을 여러 컨트롤러로 분할하기로 결정했습니다. 기본 컨트롤러에 내 기본 객체를 만들고 사용자가 선택을하고 데이터가 더 구체화되면 다른 컨트롤러에서 각 데이터 클래스를 처리하려고합니다. 새로운 서브 클래스를 그것의 기본 클래스에 묶을 필요가 생길 수 있습니다. 다음Symfony2의 컨트롤러 사이의 관계

// default controller 
class DefaultController extends Controller 
{ 
    public $trip; 

    public function startAction() 
    { 
     // get data from request etc. 
     // ... 
     $trip = new Trip(); 
    } 

    // handling everything else 
} 

와 같은,

// stage controller 
class StageController extends Controller 
{ 
    public $stage; 

    public function setStageAction() 
    { 
     // get data from request etc. 
     // ... 
     $stage = new Stage(); 
     $stage->SetTrip($trip); // doesn't work of course. 
    } 

    // handling everything else 
} 

내가 좋아하는 번들 내에서 컨트롤러의 관계입니다 무엇이 궁금했는데 위의 상황을 처리하는 방법을 알아 내려고 노력. "상황을 해결할 수 있지만 아키텍처를 이해하는 데 도움이되지 않는"서비스로 컨트롤러 설정 "을 찾을 수 없습니다. 어쩌면 그것은 바보 같은 질문 일 것입니다. 여전히 누구입니까?

+1

합니까 섹션'// 요청에서 데이터를 얻을 수 etc', 데이타베이스에서 새로 만든 여행을 얻을? 더 많은 정보를 제공해주십시오. 어떻게 든 요청 사이에 여행을 지속해야합니다 - 어떻게 그 계획을 세우시겠습니까? 세션, 데이터베이스에 저장 하시겠습니까? 나는 너의 목표를 이해하는 데 문제가있다. 보통 응답을 제공 할 때 ** 하나 ** 컨트롤러 만 호출됩니다 (ESI 또는'-> forward()'를 사용하지 않는 경우). – nifr

+0

감사합니다. 당신의 의견은 나에게 훨씬 더 분명하게 해주었습니다. 이제는 세션의 모든 것을 저장하고 결국에는 DB에 저장하므로 컨트롤러간에 통신 할 필요가 없습니다. – user2516457

답변

0

심포니에서는 서비스를 사용할 수 있습니다.

모든 서비스가 사용자가 위임 한 작업을 수행합니다. 예를 들어, StageManager라는 서비스가 있습니다. 그런 다음 Create Stage라는 함수를 만들어서 모든 엔티티 생성 및 매핑을 수행 한 다음 데이터베이스에 유지할 수 있습니다.

여기서 서비스 란 무엇인지, 서비스를 만드는 방법 및 컨트롤러에서 사용하는 방법을 볼 수 있습니다.

Link