Php 这个有多个控制器?

Php 这个有多个控制器?,php,zend-framework,Php,Zend Framework,我是zend的新手,所以我不确定组织我要做的事情的最佳方式是什么。我引导用户进行一系列测验。 mysite.com/quiz1 mysite.com/quiz2 mysite.com/quiz3 mysite.com/quiz4 当用户回答第一个测验时,他会被转发到一个页面,告诉他答案是否正确,并且在同一页面上他可以选择回答另一个测验。如果他回答了这个问题,他将再次被带到一个页面,在那里他会被告知他的答案是否正确,并在第三次测验中给出 从架构的角度来看,quiz1、quiz2等页面是否都被视为自

我是zend的新手,所以我不确定组织我要做的事情的最佳方式是什么。我引导用户进行一系列测验。 mysite.com/quiz1 mysite.com/quiz2 mysite.com/quiz3 mysite.com/quiz4

当用户回答第一个测验时,他会被转发到一个页面,告诉他答案是否正确,并且在同一页面上他可以选择回答另一个测验。如果他回答了这个问题,他将再次被带到一个页面,在那里他会被告知他的答案是否正确,并在第三次测验中给出


从架构的角度来看,quiz1、quiz2等页面是否都被视为自己的控制器?他们的道路上说他们可能是,但如果他们是,对我来说没有意义。有没有办法让它们位于相同的路径,但将它们捆绑在同一个控制器中。正如我所说,我是Zend的新手,因此希望您能提供一些关于正确方法的反馈

我会做一个测验控制器,它会有showquick()、validateQuiz()这样的操作来读取测验参数。这样,您将重用大部分代码。测验将是数据库中的条目,您也可以在那里构建路径或与它们的连接

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
     }
}

我会做一个测验控制器,它会有像showquick()、validateQuiz()这样的操作来读取测验参数。这样,您将重用大部分代码。测验将是数据库中的条目,您也可以在那里构建路径或与它们的连接

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
     }
}

好办法!为什么不让控制器休息一下呢?您可以将showAction()重命名为getAction(),将validateAction()重命名为postAction(),并最终获得更干净的URL和REST建议的其他额外功能。这是一个不错的方法!为什么不让控制器休息一下呢?您可以将showAction()重命名为getAction(),将validateAction()重命名为postAction(),最终得到更干净的URL和REST建议的其他额外功能。