Při pokusu o addradio vyskočí fatální chyba

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

Mám nejnovější nette framework 2.0.3 a při pokusu o tento kod

<?php
require 'Nette/loader.php';

use Nette\Forms\Form;
$form = new Form;
$sex = array(
    'm' => 'muž',
    'f' => 'žena',
);
$form->addRadioList('gender', 'Pohlaví:', $sex);

// pro vypsání možností do 1 řádku
$form->addRadioList('gender', 'Pohlaví:', $sex);
echo "$form";
?>

vyskočí fatální chyba
Fatal error: Uncaught exception ‚Nette\InvalidStateException‘ with message ‚Component with name 'gender‘ already exists.' in C:\Program Files (x86)\EasyPHP-5.3.9\www\Nette\ComponentModel\Container.php:64 Stack trace: #0 C:\Program Files (x86)\EasyPHP-5.3.9\www\Nette\Forms\Container.php(195): Nette\ComponentModel\Container->addComponent(Object(Nette\Forms\Controls\RadioList), ‚gender‘, NULL) #1 C:\Program Files (x86)\EasyPHP-5.3.9\www\Nette\Forms\Container.php(429): Nette\Forms\Container->addComponent(Object(Nette\Forms\Controls\RadioList), ‚gender‘) #2 C:\Program Files (x86)\EasyPHP-5.3.9\www\Nette\Forms\Container.php(328): Nette\Forms\Container->offsetSet(‚gender‘, Object(Nette\Forms\Controls\RadioList)) #3 C:\Program Files (x86)\EasyPHP-5.3.9\www\index.php(13): Nette\Forms\Container->addRadioList(‚gender‘, ‚Pohlav??:‘, Array) #4 {main} thrown in C:\Program Files (x86)\EasyPHP-5.3.9\www\Nette\ComponentModel\Container.php on line 64

co s tím?

.:M@rt!n:.
Člen | 201
+
0
-

Máš oba dva RadioListy pojmenované stejně: „gender“. Buď to u jednoho přepiš, nebo jednu komponentu smaž. Stejně je to jedna a ta samá, akorát s jinak vypsanými možnostmi.

artorie
Člen | 8
+
0
-

.:M@rt!n:. napsal(a):

Máš oba dva RadioListy pojmenované stejně: „gender“. Buď to u jednoho přepiš, nebo jednu komponentu smaž. Stejně je to jedna a ta samá, akorát s jinak vypsanými možnostmi.

díky funguje

Ascaria
Člen | 187
+
0
-

Component with name ‚gender‘ already exists.

Ach ouvej.

Editoval Ascaria (22. 5. 2012 11:59)

.:M@rt!n:.
Člen | 201
+
0
-

Máš to tam prostě někde 2×. Jestli že ne, tak zkus smazat cache.

Arynev
Člen | 33
+
0
-

Celý formulář vyrendruješ řádkem

echo $form;

Řádek

$form->addRadioList('gender', 'Pohlaví:', $sex);

musí být napsán pouze jednou

ViPEr*CZ*
Člen | 817
+
0
-

Vždyť už vám psal, že mu to funguje.
PS: pouze jednou ne e… může tam radiolist být vícekrát, jen druhý parametr označuje jméno „komponenty“ (protože každý prvek formuláře je brán jako jeho komponenta) a komponenta musí mít v daném kontejneru unikátní název!