在Zend的index.phtml中为foreach()提供的参数无效

时间:2011-12-05 09:47:10

标签: php zend-framework

index.phtml的代码如下:

<?php foreach ($this->entries as $entry): ?>
    <?php echo $this->escape($entry->email) ?>
    <br></br>
    <?php echo $this->escape($entry->comment) ?>
<?php endforeach ?>

IndexController中的indexAction()代码:

public function indexAction()
{

    $guestbook = new Application_Model_HRModel();
    $view = new Zend_View(array('scriptPath' =>'C:/Users/398853/Documents/NetBeansProjects/PhpProject3/application/views/scripts/index'));
    $view->entries = $guestbook->fetchAll();
    echo $view->render('index.phtml');

}

Application_Model_HRModel中fetchAll()的代码:

    public function fetchAll() 
   {
       $entry = new Application_Model_HRMo();
       $resultSet = $this->getDbTable()->fetchAll();
       $entries   = array();
       foreach ($resultSet as $row) {
        $entry->setId($row->id);
        $entry->setEmail($row->email);       
        $entry->setCreated($row->created);
        $entry->setComment($row->comment);
        $entries[] = $entry;
    }

            return $entries;

} 我的数据库表中有3个条目,即3行。 但是当我要求网址为http://localhost:8888/Index时,它说     警告:在第54行的C:\ Users \ 39885Documents \ NetBeansProjects \ PhpProject3 \ application \ views \ scripts \ index \ index.phtml中为foreach()提供的参数无效,然后显示最后一行的条目3次。我认为问题发生是因为at首先它执行index.phtml并且不执行indexAction()(它进一步执行fetchAll())$ entries不会是数组这就是为什么一开始它给出了上面提到的警告。现在告诉我如何从indexAction()开始执行然后来到index.phtml,这样$ entries就是一个数组。

1 个答案:

答案 0 :(得分:0)

fetchAll()中,您使用相同的对象,但您应该创建新的循环。这就是为什么输出中有3个重复行的原因。关于PHP警告 - tru到var_dump($this->entries)并检查类型