我的PurchaseController中有这个功能。
public function viewAction()
{
$detail = new Application_Model_Dbtable_Purchasedetails();
$purchaseid = $this->getRequest()->getParam('purchaseid');
$select = $detail->select()
->from(array('c' => 'purchasedetails'))
->join(array('p' => 'product'), 'p.productid = c.productid')
->where('purchaseid = ?', $purchaseid)
->setIntegrityCheck(false);
$fetch = $detail->fetchAll($select);
$this->view->purchase = $fetch;
}
我在view.phtml中有这段代码
foreach($this->view as $fetch) :?>
<tr>
<td><?php echo $this->escape($detail['productid']);?></td>
<td><?php echo $this->escape($detail['name']);?></td>
<td><?php echo $this->escape($detail['quantity']);?></td>
<td><?php echo $this->escape($detail['price']);?></td>
<td><?php echo $this->escape($detail['price']*$detail['quantity']);?> </td>
</tr>
但是,我收到此错误消息。
Warning: Invalid argument supplied for foreach() in
此错误的原因和解决方法是什么?非常感谢。
答案 0 :(得分:2)
你的foreach中的论点必须是$ this-&gt;购买而不是$ this-&gt; view。
foreach($this->purchase as $fetch) {
// Your code here
}
Zend_Controller_Action使用类变量$ this-&gt; view将任何变量加载到视图中,将给出其值,而不是变量本身。这就是为什么没有设置$ this-&gt;视图。
所以简单地省略 - &gt;查看视图内部,例如$ this-&gt; view-&gt; variableName始终变为$ this-&gt; variableName到您的视图脚本中。