禁用 Zend_Form_Element 的翻译器,但不禁用它的验证器

发布于 2024-12-01 20:23:03 字数 529 浏览 1 评论 0原文

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

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

我尝试过这个:

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

但无济于事。

I have a Zend_Form_Element_Select object, and about 3k select options. When the customer asked me to look further into optimization possibilities, I did some debug tracing, and noticed, that there were more than 3k calls to Zend_Form_Element_Multi->_translateValue and a little less to Zend_Form_Element_Multi->_translateOption . I found the option to set $elem->setDisableTranslator(true), which took care of these translations, for which I had no need. But the problem now is, that the error messages are no longer translated.

What I would like to know is, if there is a way to not translate values and options, but translate Validator messages?

I tried this:

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

but to no avail.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执手闯天涯 2024-12-08 20:23:04

我在元素类中没有看到任何选项,因此简单的解决方案是用您自己的类扩展 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()

I don't see any option within the element classes so the simple solution would be extending the Zend_Form_Element_Select class with your own. Then you can override the _translateOptions method as follows

class My_Form_Element_Select extends Zend_Form_Element_Select {

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

Furthermore, you can set some additional logic and options for this scenario, i.e. turn on/off translation for options.

If you want to eliminate this calls all together you will have to override the getMultiOption() or getMultiOptions() which are calling _translateOption().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文