是否可以编写一个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()来查看结果,使用通用视图助手会很方便。
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对象确定列名。
答案 0 :(得分:4)
您可以使用函数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不受帮助者的影响。
答案 1 :(得分:-1)