Как преобразовать функции Smarty в функции Zend - PullRequest
0 голосов
/ 22 марта 2011

Я написал пользовательские функции smarty для работы с Zend Framework, и теперь я хотел бы, чтобы они были переписаны для Zend Structure, пожалуйста, подскажите, как я могу это сделать?Thanx.Вот пример кода для того же ...

function smarty_function_render_table($params, &$smarty)
{
    extract($params);

    $sSortTableBy  = $smarty->get_template_vars("sortTableBy");
    $bSortTableOrderAsc = (boolean) (strlen($smarty->get_template_vars("sortTableOrder")) > 0 ? strtolower($smarty->get_template_vars("sortTableOrder")) == 'asc' : true);
    $iSortTablePage  = $smarty->get_template_vars("page");

    Adx_Sort::getInstance()->multiSort($data, $sSortTableBy, $bSortTableOrderAsc);

    $columnSettings = $smarty->get_config_vars($id);

1 Ответ

0 голосов
/ 26 марта 2011

Аналогом плагинов Smarty являются помощники Zend View. Вы можете написать помощники Zend View, чтобы сделать работу, аналогичную работе плагинов Smarty. Помощники Zend View - это класс, производный от абстрактного класса Zend_View_Helper_Abstract. Просмотр объекта уже доступен там через открытого класса. get_template_vars не требуется - вы можете просто просмотреть пользовательские переменные непосредственно из объекта View.

<?php
class Zend_View_Helper_Table extends Zend_View_Helper_Abstract {

    public function table($params) {
        extract($params);
        $sSortTableBy = $this->view->sortTableBy;
        $bSortTableOrderAsc = (boolean) (strlen($this->view->sortTableOrder) > 0 ? strtolower($this->view->sortTableOrder) == 'asc' : true);
        $iSortTablePage = $this->view->page;
        return Adx_Sort::getInstance()->multiSort($data, $sSortTableBy, $bSortTableOrderAsc);
    }

}

После того, как вы создали помощник вида, вы можете использовать его непосредственно в каждом скрипте вида через прямые вызовы:

<?=$this->table($params)?>
...