Zend Generic View Helper для отображения любого набора результатов DB-> fetchAll () - PullRequest
3 голосов
/ 18 мая 2010

Можно ли написать 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.

Ответы [ 2 ]

4 голосов
/ 18 мая 2010

Вы можете использовать функцию 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 ?>

Точка улучшения: используйте частичное, чтобы держать HTML вне вашего помощника.

0 голосов
/ 27 февраля 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...