Zend_Form_Multi – dodawanie opcji

August 11th, 2009 | by litestep |

Bawiąc się Zend_Form ze zdziwieniem zauważyłem, że wygenerowanie comboboxa z tysiącem elementów trwa aż 150 ms. Ze zdziwieniem okazało się że jest identycznie jak w przypadku QuickForma – wszystkie opcje są przetwarzane pojedynczo, pod kątem ewentualnych … tłumaczeń. Odpowiedzialny fragment:

    /**
     * Add an option
     *
     * @param  string $option
     * @param  string $value
     * @return Zend_Form_Element_Multi
     */
    public function addMultiOption($option, $value = '')
    {
        $option  = (string) $option;
        $this->_getMultiOptions();
        if (!$this->_translateOption($option, $value)) {
            $this->options[$option] = $value;
        }
 
        return $this;
    }
 
    /**
     * Add many options at once
     *
     * @param  array $options
     * @return Zend_Form_Element_Multi
     */
    public function addMultiOptions(array $options)
    {
        foreach ($options as $option => $value) {
            if (is_array($value)
                && array_key_exists('key', $value)
                && array_key_exists('value', $value)
            ) {
                $this->addMultiOption($value['key'], $value['value']);
            } else {
                $this->addMultiOption($option, $value);
            }
        }
        return $this;
    }

Zmiana

$form->setDisableTranslator(true);

Trochę pomaga, ale nadal pozostaje spore pole do popisu, zwłaszcza, że dokumentacja twierdz iż:

By default, no internationalisation (I18n) is performed.

Jak na coś czego nie ma to zjada całkiem sporo zasobów. A później ludzie twierdzą, że Frameworki są wolne…

Post a Comment