Duplikované htmlId u elementů formuláře v komponentách

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Senfix
Člen | 8
+
0
-

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&amp;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:&quot;N\u00e1zev mus\u00ed b\u00fdt vypln\u011bn\u00fd&quot;}" 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&amp;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:&quot;N\u00e1zev mus\u00ed b\u00fdt vypln\u011bn\u00fd&quot;}" 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
+
0
-

Tato chyba byla opravena ve verzi 2.1, neboť obsahuje tento commit:

https://github.com/…269e639d018d

Senfix
Člen | 8
+
0
-

děkuji nestíhám vývoj …