php-需要Zend Paginator对象的动态列信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-需要Zend Paginator对象的动态列信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2497字,纯文字阅读大概需要4分钟。
内容图文
![php-需要Zend Paginator对象的动态列信息](/upload/InfoBanner/zyjiaocheng/660/27bf4d1ee5c842809eb67aba68dcfcc9.jpg)
我正在构建一个用于网格列表的插件(当然是供我个人使用).现在,我在链接http://framework.zend.com/manual/2.1/en/tutorials/tutorial.pagination.html中集成了ZF2 Paginator.我正在使用DB Select for Paginator(Not Array).我需要字段名称为动态字段,所以我可以对其进行迭代,像这样
<?php $headers = $this->paginator->getFirstRow()->getColumns(); ?>
<tr>
<?php foreach ($headers as $col) : ?>
<th><?php echo $col; ?></th>
<?php endforeach; ?>
</tr>
<?php foreach ($this->paginator as $row) : ?>
<tr>
<?php foreach ($row->getColumns() as $col) : ?>
<td><?php echo $row->{$col}; ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
由于这是实践项目,因此我真的不需要集成一些已经存在的第三方网格解决方案.我只想知道使用Zend Paginator API是否可以进行类似上述的操作?
更新:问题终于解决了.解决方案与@netiul的解决方案非常匹配,但有一些修改.
在插件助手中:
$resultSet = $paginator->getIterator();
$columnNames = array_keys(get_object_vars($resultSet->getArrayObjectPrototype()));
$grid .= '<thead><tr>';
foreach($columnNames as $header)
{
$grid .= '<th>'.$header.'</th>';
}
$grid .= '</tr></thead>';
$grid .= '<tbody>';
foreach($resultSet as $row)
{
$grid .= '<tr>';
foreach($columnNames as $col)
{
$grid .= '<td>'.$row->$col.'</td>';
}
}
$grid .= '</tbody>';
在Model中还需要进行一项更改(可惜,我需要在插件外部进行此更改,现在除了如何修复被所有项目模型覆盖的Model父类之外,不要修复).
我需要添加结果集缓冲区以修复前向光标错误,例如This result is a forward only result set, calling rewind() after moving forward is not supported – Zend)
在模型中:
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
$this->resultSetPrototype = new ResultSet();
$this->resultSetPrototype->buffer(); // New Line added for buffer
$this->resultSetPrototype->setArrayObjectPrototype(new Leads());
$this->initialize();
}
解决方法:
因此,回顾一下您的问题:您想输出一个您不知道列名的分页器的内容,因为它们可能是动态的?
假设我们有一个有效的Paginator,其中包含结果和未知的列名.这些是正确输出它们的步骤:
>提取第一行的列名,并将它们放入数组中.
>生成表/网格的标题.
>使用数组遍历各行以匹配表标题序列.
可能如下所示.
$firstItem = reset($paginator->getIterator());
$columnNames = array_keys(get_object_vars($firstItem));
// optional do some sorting here like `sort($columNames)`
echo '<thead><tr>';
foreach ($columnNames as $columnName) {
echo '<th>' . $columnName . '</th>';
}
echo '</tr></thead>';
echo '<tbody>';
foreach ($paginator as $item) {
echo '<tr>';
foreach ($columnNames as $columnName) {
echo '<td>' . $item->$columnName . '</td>';
}
echo '</tr>';
}
echo '</tbody>';
内容总结
以上是互联网集市为您收集整理的php-需要Zend Paginator对象的动态列信息全部内容,希望文章能够帮你解决php-需要Zend Paginator对象的动态列信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。