我正在处理一个小应用程序,我的controllers_viewpvcontroller
有问题。我正在尝试显示报告。用户可以决定年份和月份,在提交后,报告将显示在表单下的同一页面中。
这是我的控制器:
require_once ('library/Zend/Controller/Action.php');
class controllers_viewpvController extends Zend_Controller_Action {
public function init()
{
}
public function viewpvAction()
{
require_once 'models/PastPV.php';
$data = $this->getRequest()->getParams();
$year = $data['year'];
$month = $data['month'];
$pv = new PastPV();
$return = $pv->viewPV($year, $month); // this function is working fine.
$this->view->assign('values',$return);
}
public function getpvAction()
{
}
}
这是我的viewpv.phtml
:
<body>
<h1 id="h2"> Review</h1>
<br><div><center><form action="../Viewpv/viewpv" method="post" >
<h3>Payment Vouchers for : <select name="month">
<option value="null">(Month)</option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
</select>
<select name="year">
<option value="null">(Year)</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select></h3>
<br><br>
<input type="submit" value="View">
</form></center>
</div></body>
<!--the codes to display the form are below-->
<?php
$return = $this->values;
if(!empty($return))
$tbl = '<table><tr><td>Document No</td></tr>';
while($data = $return->fetchRow()){ //here I think 'fetchRow()' may cause a problem.
//but that is not my question.
$tbl.='<tr><td>'.$data['docNo'].'</td></tr>';
}
$tbl.='</table>';
echo $tbl;
?>
当我尝试加载页面时,它会出现以下php错误:
Undefined index: year
Undefined index: month
此外,它还提供了Zend_Db_Statement_Exception,No parameters were bound
。我的感觉是,我没有找到正确的方法来做到这一点。
请帮我解决这个问题。如果有更好的方法来实现这一目标,请告诉我。
答案 0 :(得分:1)
如果表单与您要显示的报告位于同一页面上,则需要检查POST数据。您可以使用Zend中的请求对象来完成此操作。
if($this->getRequest()->isPost())
{
//Process the form and get things you need to display the report
}
目前,如果您直接访问该页面,就好像您正在做的那样,那么您正在尝试查找尚未提交回操作的索引。
因此,这将导致您的错误失败:
$year = $data['year'];
$month = $data['month'];
然后,您正在对该信息进行数据库查找,从而导致数据库错误。如果你添加我列出的“if”语句,你应该没问题。
您应该阅读Zend Form和The Request Object的Zend文档。 Zend Form可以让您的生活更轻松。仅在视图中“显示”事物也是一种好习惯。不鼓励在视图中进行数据库查找。