2011-03-22 54 views
0

我已經編寫了自定義的smarty函數來與Zend框架一起工作,現在我希望它們被重寫爲zend結構,我建議我該怎麼做?感謝名單。這裏是相同的示例代碼...如何將smarty函數轉換爲zend函數

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); 

回答

0

模擬Smarty插件是Zend View Helpers。你可以寫Zend View Helpers來做與Smarty插件類似的工作。 Zend View Helpers是一個派生自Zend_View_Helper_Abstract抽象類的類。 View對象已經可以通過view public class member訪問。 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)?> 
+0

完美,它的工作...感謝名單花花公子 – Lakshman 2011-03-28 12:41:38

+0

我應該將其替換爲在轉換爲Zend_View_Helper時使用smarty方法:$ smarty-> get_config_vars($ id),$ smarty - > _ get_plugin_filepath($ sSmartyPluginType,$ sPluginName) – Lakshman 2011-03-28 13:58:42

+0

您會發現,ZF Views與Smarty完全不同。所以對於一些Smarty功能沒有必要直接模擬。據我所知,沒有一些特殊的ZF視圖配置,所以沒有模擬get_config_vars方法。你必須重新考慮你的插件和你的代碼。問問自己,你試圖用這種方法做什麼,然後用ZF Views找到合適的解決方案會容易得多。 – Ololo 2011-03-28 19:39:43