2010-12-15 6 views
0

Je suis deux jours avec un problème et je ne peux pas trouver la solution,contrôleurs PHP MVC problème

J'ai 3 modules groupes, événements et Pages

Les événements peuvent être dans des groupes et des pages, je veulent accéder à cette façon:

/groups/{id}/events/{id} 
/page/{id}/events/{id} 

J'ai 3 contrôleurs: GroupController, EventController et PageController

les événements utilisent le même modèle. Mais selon qu'ils appartiennent à un contrôleur de groupe ou d'événement, une méthode change. J'ai décidé de créer deux contrôleurs comme

GroupEventController extends EventController 
PageEventController extends EventController 

Dans le cas d'un GroupEventController, je dois aussi GroupController données.

Comment est-ce que tu fais ça?

+0

Quel cadre utilisez-vous? – powtac

+0

J'utilise symphony. – aprencai

+0

Symfony, pas symphonie –

Répondre

0

Vous parlez d'héritage double. PHP ne supporte pas cela, mais il existe des moyens de contourner cela. Dans votre cas, vous pouvez avoir la chaîne d'héritage. Faites tout passer par les contrôleurs de groupe ou de page. Ceux-ci peuvent étendre les GroupEventController et PageEventController respectivement. Et les deux peuvent étendre le contrôleur d'événement.

+0

alors, ai-je routé directement/groups/id/events/id vers -> GroupEventController? – aprencai

+0

Je ne suis pas sûr de ce que vous voulez dire. Cependant, c'est la deuxième question à ce sujet que j'ai répondu. Je suppose que le problème est que vous ne savez pas comment poser la question que vous voulez vraiment poser. – DampeS8N

0

Vous devez acheminer /groups/:id/events/:event_id-GroupEventController à une méthode:

Controller:

public function executeGroupData(sfWebRequest $request){ 
//Logic 
} 

Routing (routing.yml):

groupData: 
    url: /group/:id/events/:event_id 
    param: { module: groups, action: groupData } 
Questions connexes