我制作索引动作,其中我想获取日历数据并使用index.phtml显示此数据,但始终没有显示日历,我如何显示日历数据? 这是我的indexaction:
public function indexAction()
{
$dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
$qb = $dm->createQueryBuilder('Calendar\Document\Calendar')->select('title', 'description');
$query = $qb->getQuery();
$calendars = $query->execute();
return array('calendars' => $calendars);
}
这是我的index.phtml:
<?php
$calendars = $this->calendars;
$title = 'Calendars by '.$this->escapeHtml($calendars[0]->email);
$this->headTitle($title);
?>
<h3><?php echo $this->escapeHtml($title); ?></h3>
<ul>
<li><a href="<?php echo $this->url('calendar', array('action'=>'create'));?>">Create New Calendar</a></li>
</ul>
<h4>Calendars created by you</h4>
<?php if (is_null($calendars)): ?>
<p>No calendars</p>
<?php else: ?>
<table class="table">
<tr>
<th>calendar name</th>
<th>description</th>
<th>owner</th>
<th>actions</th>
</tr>
<?php foreach ($calendars as $calendar) : ?>
<tr>
<td>
<a href="<?php echo $this->url('calendar',array('action'=>'show', 'id' => $calendar->calendar_id));?>">
<?php echo $this->escapeHtml($calendar->title);?>
</a>
</td>
<td><?php echo $this->escapeHtml($calendar->description);?></td>
<td>
<?php echo $this->gravatar($this->escapeHtml($calendar->email));?>
<?php echo $this->escapeHtml($calendar->email);?>
</td>
<td>
<a href="<?php echo $this->url('calendar',
array('action'=>'settings', 'id' => $calendar->calendar_id));?>">Settings</a>
<a href="<?php echo $this->url('calendar',
array('action'=>'delete', 'id' => $calendar->calendar_id));?>">delete</a>
</td>
</tr>
<?php endforeach; ?>
</table>
以下是我的回复:
Doctrine\ODM\MongoDB\Cursor Object
(
[baseCursor:Doctrine\ODM\MongoDB\Cursor:private] => Doctrine\MongoDB\Cursor Object
(
[connection:protected] => Doctrine\MongoDB\Connection Object
(
[mongo:protected] => MongoClient Object
(
[connected] => 1
[status] =>
[server:protected] =>
[persistent:protected] =>
)
[server:protected] => mongodb://127.0.0.1:27017/events
[options:protected] => Array
(
)
[config:protected] => Doctrine\ODM\MongoDB\Configuration Object
(
[attributes:protected] => Array
(
[mongoCmd] => $
[retryConnect] => 0
[retryQuery] => 0
[autoGenerateProxyClasses] => 1
[proxyDir] => data/DoctrineMongoODMModule/Proxy
[proxyNamespace] => DoctrineMongoODMModule\Proxy
[autoGenerateHydratorClasses] => 1
[hydratorDir] => data/DoctrineMongoODMModule/Hydrator
[hydratorNamespace] => DoctrineMongoODMModule\Hydrator
[defaultDB] => events
[metadataCacheImpl] => Doctrine\Common\Cache\ArrayCache Object
(
[data:Doctrine\Common\Cache\ArrayCache:private] => Array
我如何在索引页面上显示数据?
答案 0 :(得分:0)
您需要一个视图模型来呈现您的数据。而不是
return array('calendars' => $calendars);
您想要一个视图:
$viewModel = new ViewModel
(
array
(
'calendars' => $calendars,
)
);
return $viewModel;
或者对于Json:
$jsonModel = new JsonModel
(
array
(
'calendars' => $calendars,
)
);
return $jsonModel;
确保为控制器添加use语句:
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;
如果要指定特定视图,可以使用:
$viewModel->setTemplate('path/to/specific/view.phtml');
或
$viewModel->setTemplate('mapping/for/specifc/view');
使用模块配置中指定的映射