Nastavení atributu „id“ formuláři

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

Už se to minimálně tady a tady probíralo, nicméně tam nikde není pohromadě popsáno kompletní řešení. Protože jsem taky narazil na potřebu změnit výchozí „id“ formuláře, řešení bych viděl dvě.

1. ID nastavit přímo v továrničce, za předpokladu použití $this a atributu $name:

protected function createComponentEditForm($name)
{
  $form = new NAppForm($this, $name);
  $form->getElementPrototype()->id('mojeId');
  ...
}

2. ID nastavit až tam, kde se formulář připojuje:

protected function createComponentEditForm()  // tady není $name
{
  $form = new NAppForm();  // tady nejsou $this a $name
  ...
}

public function renderEdit()
{
  $form = $this['editForm'];
  $form->getElementPrototype()->id('mojeId');
  ...
}

Editoval radas (8. 3. 2012 7:15)

ZAJDAN
Člen | 45
+
0
-

tak já se s tím trápil jak štvanej pes, ale ani toto řešení mi nefungovalo jak jsem chtěl a protože je fórum plné starého bordela co už dávno neplatí odhodlal jsem najít řešení v :
libs/nette/Forms/Form.php kde s píše:

public function __construct($name = NULL)
	{
		$this->element = Nette\Utils\Html::el('form');
		$this->element->action = ''; // RFC 1808 -> empty uri means 'this'
		$this->element->method = self::POST;
		$this->element->id = 'frm-' . $name;

a tak úspěšně používáme zápis takto:

protected function createComponentRegForm3() {
        $form = new Form('mojeID');
        $form->setAction('/submit.php');
        $form->setMethod('POST');
        $form->onSuccess[] = callback($this, 'RegForm3Submitted');

        $form->addGroup('fotos');

no a požadované ID# už dohledávám jako #frm-mojeID

Editoval ZAJDAN (7. 3. 2012 22:54)

Jan Endel
Člen | 1016
+
0
-

A proč v místě, kde potřebuješ id prvku místo #frm-mojeID nenapíšeš {$form['mojeId']->htmlId} ?

Editoval pilec (7. 3. 2012 23:03)

ZAJDAN
Člen | 45
+
0
-

pilec napsal(a):

A proč v místě, kde potřebuješ id prvku místo #frm-mojeID nenapíšeš {$form['mojeId']->htmlId} ?

pač to ID volám třeba v JavaScriptu přímo v .js

Jan Endel
Člen | 1016
+
0
-

Pak bych to do skriptu předával ze šablony.

radas
Člen | 225
+
0
-

@ZAJDAN To bych nepoužíval právě proto, kdyby se někdy změnilo to frm- tak jako u 2.1-dev u formulářových prvků, viz GitHub.

ZAJDAN
Člen | 45
+
0
-

ZAJDAN napsal(a):

pilec napsal(a):

A proč v místě, kde potřebuješ id prvku místo #frm-mojeID nenapíšeš {$form['mojeId']->htmlId} ?

pač to ID volám třeba v JavaScriptu přímo v .js

a není to jedno?

ZAJDAN
Člen | 45
+
0
-

radas napsal(a):

@ZAJDAN To bych nepoužíval právě proto, kdyby se někdy změnilo to frm- tak jako u 2.1-dev u formulářových prvků, viz GitHub.

máš pravdu, a musím vyzvednout, že toto je něco z toho co nette dělá zmateným
nejsem programátor tak pro mě není snadné se v tom vyznat a neustálé změny, bez řádné dokumentace jsou pro lidi jako já zničující

David Grudl
Nette Core | 8228
+
0
-

fixed