如何将smarty函数转换为zend函数

时间:2011-03-22 09:45:29

标签: zend-framework smarty zend-form

我已经编写了自定义智能函数来使用Zend框架,现在我希望将它们重写为zend结构,PLZ建议我该怎么做?感谢名单。以下是相同的示例代码......

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 :(得分:0)

Smarty插件的类比是Zend View Helpers。您可以编写Zend View Helpers来完成与Smarty插件类似的工作。 Zend View Helpers是一个派生自Zend_View_Helper_Abstract抽象类的类。 View对象已经可以通过视图公共类成员访问。不需要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)?>