Witam,
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)
'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
$$subFormName->addElement('text', $v['code'].'[title]', array( '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
$$subFormName->addElement('textarea', $v['code'].'[descriptions]', array( '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
$$subFormName->setElementDecorators(array('Form')); $this->addSubForm($$subFormName, $v['code']);
}
}
}