2

オブジェクトがZend_Form_Element_Selectあり、約 3k の選択オプションがあります。お客様から最適化の可能性をさらに調査するように依頼されたとき、デバッグ トレースを行ったところ、 への呼び出しが 3,000 を超え、 へZend_Form_Element_Multi->_translateValueの呼び出しが少し少ないことに気付きましたZend_Form_Element_Multi->_translateOption。set のオプションを見つけました$elem->setDisableTranslator(true)。これは、必要のないこれらの翻訳を処理してくれました。しかし、問題は、エラー メッセージが翻訳されなくなったことです。

私が知りたいのは、値とオプションを翻訳するのではなく、Validator メッセージを翻訳する方法があるかどうかです。

私はこれを試しました:

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()またはをオーバーライドする必要があります。getMultiOptions()_translateOption()

于 2011-08-30T17:07:32.407 に答える