Zend Framework:视图究竟如何工作?

时间:2012-08-09 07:08:22

标签: zend-framework

我的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

此错误的原因和解决方法是什么?非常感谢。

1 个答案:

答案 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到您的视图脚本中。