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就是一个数组。
答案 0 :(得分:0)
在fetchAll()
中,您使用相同的对象,但您应该创建新的循环。这就是为什么输出中有3个重复行的原因。关于PHP警告 - tru到var_dump($this->entries)
并检查类型