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…