Otoż chciałbym zastosować edycje stron w kilku językach. Gdybym miał napisać formularz włąsnoręcznie zrobiłbym to mniej więcej tak:
<form method="post"> <fieldset id="pl"> <input type="text" name="pl[title]"> <input type="text" name="pl[description]"> </fieldset> <fieldset id="eng" class="hide"> <input type="text" name="eng[title]"> <input type="text" name="eng[description]"> </fieldset> </form>
W momencie wysłania formularza otrzymałbym tablicę (pisane z głowy więć proszę nie patrzeć na błędy bo nie o to chodzi)
Array { 'title' => '...', 'description' => '...' }, 'title' => '...', 'description' => '...' } }
Jednak przy zastosowaniu Zend_Form_SubForm wszystkie pola o nazwie pl[title], eng[title] itp. zamienia na pltitle, engtitle itd.. Czy można to zmienić aby efekt był jak formularz wyżej.
Oto kod który używam do budowy formularza:
if (Zend_Registry::isRegistered('langs')) { $langs = Zend_Registry::get('langs'); if ($langs) { foreach ($langs as $k=>$v) { $subFormName = 'subform_'.$v['code']; $$subFormName = new Zend_Form_SubForm(); # Tworzenie pola title 'label' => 'Tytuł strony', 'isEmpty' => 'Pole nie może być puste' ))), 'min' => false, 'max' => '100', 'stringLengthTooLong' => 'Wartość jest zbyt długi. Maksymalna ilość znaków wynosi %max%.' ))), ), 'required' => true, 'class' => 'text', )); # End # Tworzenie pola short_descriptions 'label' => 'Krótki opis strony', 'isEmpty' => 'Pole nie może być puste' ))), 'min' => false, 'max' => '200', 'stringLengthTooLong' => 'Wartość jest zbyt długi. Maksymalna ilość znaków wynosi %max%.' ))), ), 'required' => true, 'class' => 'text', )); # End $this->addSubForm($$subFormName, $v['code']); } } }