Shodná ID inputů uvnitř formů v komponentách vytvořených Multiplierem

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

Nazdar, našel jsem chybu – když generuji komponenty přes Multiplier a ty komponenty mají uvnitř formuláře, tak jednotlivé inputy těchto formulářů mají stejná id – viz http://dwd.cz/…form/try-ids.

Toto chování mi znemožňuje mít víc instancí TinyMCE na jedné stránce, jelikož se chytne první textarei a o ostatní, které mají stejné id jako první, už nejeví zájem.

Provizorně jsem si to opravil ve třídě Nette\Forms\Controls\BaseControl ve fci getHtmlId() (https://api.nette.org/…rol.php.html#170):

public function getHtmlId()
	{
		if ($this->htmlId === FALSE) {
			return NULL;

		} elseif ($this->htmlId === NULL) {
			//$this->htmlId = sprintf(self::$idMask, $this->getForm()->getName(), $this->lookupPath('Nette\Forms\Form'));
			$this->htmlId = $this->getForm()->getElementPrototype()->id . '-' . $this->getName();
		}
		return $this->htmlId;
	}

Takto mi to funguje a přijde mi to správnější, ale nejsem si jistej, jestli není čistší cesta než přes getElemntPrototype()->id.

(Nette 2.0 stable)

Jan Tvrdík
Nette guru | 2595
+
0
-

+1

David Grudl
Nette Core | 8228
+
0
-

Pokusil jsem se to fixnout.