gpt4 book ai didi

zend-framework - Zend Generic View Helper 用于显示任何 DB->fetchAll() 结果集

转载 作者:行者123 更新时间:2023-12-04 04:33:13 24 4
gpt4 key购买 nike

是否可以编写一个 Zend View Helper 来将任何 fetchAll() 操作的结果集呈现为通用表?

我的模型代码是这样的

class Model_DbTable_XWZ extends Zend_Db_Table_Abstract
{
protected $_name = 'xwz';
protected $_primary = 'id';

public function getA()
{
$sql = $this->select()
....
return $this->fetchAll($sql);
}

public function getB()
{
$sql = $this->select()
......
return $this->fetchAll($sql);

而是使用 Zend_Debug::Dump() 来查看结果,使用通用的 View 助手会很方便。

class Zend_View_Helper_DisplayGenericTableHelper extends Zend_View_Helper_Abstract {

public $view;

public function setView(Zend_View_Interface $view)
{
$this->view = $view;
}

public function displayGenericTableHelper($result)
{
....??
}
}

有点像,但我不确定如何从 $result 对象中确定列名。

最佳答案

你可以使用函数 Zend_Db_Table_Row_Abstract::toArray(),像这样:

// in view helper
public function displayGenericTableHelper(Zend_Db_Table_Rowset_Abstract $rowset) {
$table = '<table><tr>';
foreach(array_keys($rowset->current()->toArray()) as $column) {
$table .= '<th>'.$column.'</th>';
}
foreach($rowset as $row) {
$table .= '</tr><tr>';
foreach($row->toArray() as $content) {
$table .= '<td>'.$content.'</td>';
}
}
return $table.'</tr></table>';
}

用例:

// in a view
<?= $this->displayGenericTableHelper($this->model_data) ?>

替代调用:

// in controller
$model_data = $your_model->getA();
$view->your_table = $view->displayGenericTableHelper($model_data);

// in view:
<?= $this->your_table ?>

改进点:使用 partial 将 HTML 排除在您的帮助程序之外。

关于zend-framework - Zend Generic View Helper 用于显示任何 DB->fetchAll() 结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2858368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com