2011-08-30 72 views
2

我有一個Zend_Form_Element_Select對象和約3k個選擇選項。當客戶要求我進一步研究優化的可能性時,我做了一些調試跟蹤,並注意到,有超過3k的電話給Zend_Form_Element_Multi->_translateValue,稍微減少到Zend_Form_Element_Multi->_translateOption。我找到了設置$elem->setDisableTranslator(true)的選項,該選項負責處理這些翻譯,我不需要這些翻譯。但現在的問題是,錯誤消息不再被翻譯。爲Zend_Form_Element禁用翻譯器,但不是它的驗證器

我想知道的是,如果有辦法不翻譯值和選項,但翻譯驗證器消息?

我嘗試這樣做:

foreach($operators->getValidators() as $val){ 
     $val->setDisableTranslator(false); 
    } 

,但無濟於事。

回答

2

我沒有在元素類中看到任何選項,所以簡單的解決方案將擴展您自己的Zend_Form_Element_Select類。然後可以重寫_translateOptions方法如下

class My_Form_Element_Select extends Zend_Form_Element_Select { 

    protected function _translateOption($option,$value) { 
     // or add more logic here 
     return false; 
    } 
} 

此外,還可以設置一些附加的邏輯和選項這種情況下,即,打開/關閉翻譯選項。

如果你想消除這一切,你將不得不覆蓋撥打_translateOption()getMultiOption()getMultiOptions()

+0

謝謝!最後,並不需要這樣做,但這會奏效 –

相關問題