我有一个大约60个表格报告页面的网站。想将其转换为Zend。该报告有两个状态:空报告和填写数据报告。每个报告都有自己的一组输入框,并选择下拉菜单以缩小搜索范围。您单击提交并检索数据。那就是每一页都有。
我是否创建了60个控制器,每个控制器都有默认索引操作和getData操作?我在网上看到的所有内容并没有真正描述如何构建一个真实的网站。
答案 0 :(得分:3)
如果您在所有60个报告中提及,那么获取和检索数据的方法非常相似。创建60个控制器(+ PHP文件)似乎很愚蠢。
您似乎正在尝试使用默认重写路由器来解决此问题。您可以向路由器添加一条路由,该路由将自动存储您的报告名称,您可以将逻辑抽象并委托给某个report-runner-business-object-thingy。
$router = $ctrl->getRouter(); // returns a rewrite router by default
$router->addRoute(
'reports',
new Zend_Controller_Router_Route('reports/:report_name/:action',
array('controller' => 'reports',
'action' => 'view'))
);
然后在你的控制器中出现类似的事情......
public function viewAction() {
$report = $this->getRequest()->getParam("report_name");
// ... check to see if report name is valid
// ... stuff to set up for viewing report...
}
public function runAction() {
$report = $this->getRequest()->getParam("report_name");
// ... check to see if report name is valid
// Go ahead and pass the array of request params, as your report might need them
$reportRunner = new CustomReportRunner( $report, $this->getRequest()->getParams() );
$reportRunner->run();
}
你明白了;希望这有帮助!