0

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

このエラーの原因と解決策は何ですか? どうもありがとう。

4

1 に答える 1

2

foreach の引数は、$this->view ではなく $this->purchase でなければなりません。

foreach($this->purchase as $fetch) {
    // Your code here
}

クラス変数 $this->view は、Zend_Controller_Action が任意の変数をビューにロードするために使用されます。変数自体ではなく、その値が与えられます。$this->view が設定されていないのはそのためです。

したがって、ビュー内の ->view を除外するだけです。たとえば、$this->view->variableName は、ビュー スクリプトでは常に $this->variableName になります。

于 2012-08-09T07:38:08.710 に答える