Duplikované htmlId u elementů formuláře v komponentách
- Senfix
- Člen | 8
Ahoj,
našel jsem asi drobnou chybku v generování ID pro jednotlivé inputy ve
formulářích mám jednoduchou strukturu Komponenta → multiplier →
komponenta → form
Hlavní komponenta
<?php
class Kapitoly extends \Nette\Application\UI\Control{
public function createComponentKapitola($id){
$presenter = $this;
$kapitoly = $this->kapitoly;
$user = $this->user;
return new \Nette\Application\UI\Multiplier(function($id, $control) use ($presenter, $kapitoly, $user) {
$k = $kapitoly->get();
return new \ManualModule\Kapitola($control, $id, $k[$id], $user);
});
}
}
?>
subkomponenta
<?php
class Kapitola extends \Nette\Application\UI\Control{
public function createComponentNewKapitola(){
$form = new \Nette\Application\UI\Form;
$form->addText("nazev", "název")
->setRequired("Název musí být vyplněný");
$form->addSubmit('send', 'uložit');
$form->onSuccess[] = callback($this, 'newKapitola');
return $form;
}
}
?>
a nakonec templaty
kapitala.latte
{foreach $kapitoly as $k}
{control 'kapitola-'.$k->id_kapitoly}
{/foreach}
kapitoly.latte
{form newKapitola style => 'display: none'}
<div class="kap-nadpis"><h4>Nová kapitola</h4></div>
<table>
<tr><td width="120" align="right">{label nazev /}</td><td>{input nazev style => "width: 400px;"}</td></tr>
<tr><td colspan="2" align="right">{input send}</td></tr>
</table>
{/form}
tohle všechno mi vygeneruje duplicitní ID u jednotlivých elementů, ačkoli id formuláře se generuje správně opět ukázka
<form action="/?do=manual-kapitola-1-newKapitola-submit&presenter=Manual%3ADashboard" method="post" id="frm-manual-kapitola-1-newKapitola" novalidate="">
<div class="kap-nadpis"><h4>Nová kapitola</h4></div>
<table>
<tbody><tr><td width="120" align="right"><label for="frmnewKapitola-nazev">název</label></td><td><input style="width: 400px;" type="text" name="nazev" id="frmnewKapitola-nazev" required="required" data-nette-rules="{op:':filled',msg:"N\u00e1zev mus\u00ed b\u00fdt vypln\u011bn\u00fd"}" value=""></td></tr>
<tr><td colspan="2" align="right"><input type="submit" name="send" id="frmnewKapitola-send" value="uložit"></td></tr>
</tbody></table>
<div><!--[if IE]><input type=IEbug disabled style="display:none"><![endif]--></div>
</form>
<form action="/?do=manual-kapitola-1-sub-3-newKapitola-submit&presenter=Manual%3ADashboard" method="post" id="frm-manual-kapitola-1-sub-3-newKapitola" novalidate="">
<div class="kap-nadpis"><h4>Nová kapitola</h4></div>
<table>
<tbody><tr><td width="120" align="right"><label for="frmnewKapitola-nazev">název</label></td><td><input style="width: 400px;" type="text" name="nazev" id="frmnewKapitola-nazev" required="required" data-nette-rules="{op:':filled',msg:"N\u00e1zev mus\u00ed b\u00fdt vypln\u011bn\u00fd"}" value=""></td></tr>
<tr><td colspan="2" align="right"><input type="submit" name="send" id="frmnewKapitola-send" value="uložit"></td></tr>
</tbody></table>
<div><!--[if IE]><input type=IEbug disabled style="display:none"><![endif]--></div>
</form>
Po tomto vyčerpávajícím popisu by mě zajímalo jestli tohle už někdo
řešil, protože duplicitní ID mají několik problému ale pro mě zásadní
je že nemůžu napojovat CKEditor. Protože mě nenapadá jiné řešení než
úprava generování elementů přímo v Nette a na to si moc netroufám.
Pro úplnost:
PHP 5.3.14 |
Microsoft-IIS/7.5 |
Nette Framework 2.0.8 (released on 2013–01–01)
- Vojtěch Dobeš
- Gold Partner | 1316
Tato chyba byla opravena ve verzi 2.1, neboť obsahuje tento commit: