Nastavení atributu „id“ formuláři
- radas
- Člen | 225
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
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)
- ZAJDAN
- Člen | 45
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í