2010-09-16 8 views
1

Je suis nouveau sur zend, je ne sais pas quelle est la meilleure façon d'organiser ce que j'essaie de faire. Je dirige l'utilisateur vers une série de quiz. mysite.com/quiz1 mysite.com/quiz2 mysite.com/quiz3 mysite.com/quiz4Plusieurs contrôleurs pour cela?

Lorsque l'utilisateur répond le premier jeu-questionnaire, il est transmis à une page qui lui indique si sa réponse est correcte , et sur la même page, il peut choisir de répondre à un autre quiz. S'il répond, il sera à nouveau amené à une page où on lui dira si sa réponse était correcte et présentée avec le troisième quiz. Du point de vue de l'architecture, chacune de ces pages quiz1, quiz2, etc. est-elle considérée comme un contrôleur à part? Leur chemin indique qu'ils peuvent l'être, mais cela n'a pas de sens pour moi s'ils le sont. Existe-t-il un moyen de les avoir sur ces mêmes chemins mais de les regrouper dans le même contrôleur. Comme je l'ai dit je suis nouveau à Zend, j'apprécierais avoir des commentaires sur la bonne façon de le faire.

Répondre

5

Je voudrais faire un contrôleur Quiz qui aura des actions comme showQuiz(), validateQuiz() qui lira le paramètre quiz. De cette façon, vous réutiliserez la majeure partie du code. Les quizz seront des entrées dans la base de données et là vous pouvez également construire des chemins ou des connexions avec eux.

class QuizController extends Zend_Controller_Action 
{ 
    public function showAction() 
    { 
      // you can play this in routes but it could be basically something like this 
      // localhost/quiz/id/1 
      $quiz_id = $this->_request->getParam('id'); 
      $this->view->quiz = $this->getQuizTable()->find($quiz_id); 
    } 

    public function validateAction() 
    { 
      $quiz_id = $this->_request->getParam('id'); 
      $quiz = $this->getQuizTable()->find($quiz_id); 
      $quiz->validate(); // build your own validator function 
    } 
} 
+0

Belle approche! Juste pourquoi ne pas faire le contrôleur REST-ful? Vous pouvez renommer votre showAction() en getAction() et validateAction() en postAction(), et finir avec des URL beaucoup plus propres et d'autres avantages suggérés par REST. – Vika

Questions connexes