ID prvků při vícenásobném použití stejného formu na stránce
- Petr Daňa
- Člen | 109
Narazil jsem na problém s generováním ID prvků ve formuláři. Mám controlu, která obsahuje formulář generovaný klasickým postupem. Tuto controlu používám napříč webem na většině stránek. Pak mám jinou controlu, která obsahuje tu první s formulářem. Na jedné stránce pak mám případ, kdy je formulář vyrenderovaný 3x – jednou klasicky a pak 2× v té druhé controle, která je na té stránce 2×.
Problém je, že sice ID formulářů jsou jedinečné, ale ID prvků už ne, tj. ID prvků nereflektují své „majitele“ obdobně jako formulář samotný. Je to nějaký bug nebo vlastnost? Jak to napravit?
Zkoušel jsem tomu formuláři při new AppForm dávat dynamicky názvy (tj. základní název + nějaký suffix), jenže tam pak byl problém s tím, že po odeslání formuláře nemohl najít továrnu na vytvoření té komponenty s formulářem, což je logické, ale z počátku mě to nedošlo:
<?php
class ... extends Control {
public render() {
....
$this->template->addTourForm = $this->createComponentAddTourForm('addTourForm', $this->htmlId);
....
}
public function addTourSubmitted(BaseForm $form) {
....
}
protected function createComponentAddForm($name, $suffixName = '') {
form = new AppForm($this, 'addForm' . $suffixName);
....
$form->onSubmit[] = array($this, 'addSubmitted');
return $form;
}
}
?>