2

我有一个Zend_Form_Element_Select对象,大约有 3k 个选择选项。当客户要求我进一步研究优化可能性时,我进行了一些调试跟踪,并注意到Zend_Form_Element_Multi->_translateValueZend_Form_Element_Multi->_translateOption. 我找到了 set 选项$elem->setDisableTranslator(true),它负责处理这些我不需要的翻译。但现在的问题是,错误消息不再被翻译。

我想知道的是,是否有办法不翻译值和选项,而是翻译验证器消息?

我试过这个:

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

但无济于事。

4

1 回答 1

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

此外,您可以为此场景设置一些额外的逻辑和选项,即打开/关闭选项的翻译。

如果你想一起消除这个调用,你将不得不覆盖getMultiOption()or getMultiOptions()which are calling _translateOption()

于 2011-08-30T17:07:32.407 回答