Nefungující createComponent

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

Dobrá den,
Mám problém s Komponentama. Definuji si v Presenteru (se jménem Auth) komponentu: createComponentLoginForm a pak si jí pomocí tohoto pokusím zavolat: {control loginForm}. Kdoví kolikrát jsem kontroloval, jestli mám vše správně zapsáno, takže netuším v čem by mohl být problém…
Děkuji za radu…

HanziQ
Člen | 16
+
0
-

A nějaká chybová hláška by nebyla? Nebo co nefunguje?
Případně i ukázku kódu.

Editoval HanziQ (14. 11. 2010 18:48)

natlaid
Člen | 18
+
0
-

Velice se omlouvám, používám Nette Alpha 2. Vyhazuje to tuto vyjímku:

InvalidArgumentException
Component with name ‚loginForm‘ does not exist.

Vyhazuje to chybu na řádku 119 v souboru Application/Control.php.

public function getWidget($name)
{
return $this->getComponent($name);
 }

Majkl578
Moderator | 1364
+
0
-

Ukaž tu továrničku.

natlaid
Člen | 18
+
0
-

Dobře (Jak je tam to Form::FILLED, tak mám nahoře v souboru napsáno use Nette\Forms\Form)

protected function createComponentLoginForm()
{
$form = new \Nette\Application\AppForm($this, ‚loginform‘);

$form->addText(‚login‘, ‚Jméno:‘)
->addRule(Form::FILLED, ‚Prosím zadejte svoje jméno.‘);

$form->addPassword(‚password‘, ‚Password:‘)
->addRule(Form::FILLED, ‚Prosím zadajte heslo.‘);

$form->addProtection(‚Prosím odešlete formulář znova.‘);
$form->addSubmit(‚send‘, ‚Přihlásit!‘);

$form->onSubmit[] = array($this, ‚loginFormSubmitted‘);
return $form;

}

Mikulas Dite
Člen | 756
+
0
-
$form = new \Nette\Application\AppForm($this, ‚loginform‘);

oprav na

$form = new \Nette\Application\AppForm($this, $name);

To by asi mělo stačit. (name se přidává magicky)

natlaid
Člen | 18
+
0
-

Mikulas Dite napsal(a):

$form = new \Nette\Application\AppForm($this, ‚loginform‘);

oprav na

$form = new \Nette\Application\AppForm($this, $name);

To by asi mělo stačit. (name se přidává magicky)

Jo, to je ono, už mi to funguje. Díky moc, ale jestli se můžu se zeptat, kde se ta magická proměnná veme?

redhead
Člen | 1313
+
0
-

chybí tam protected function createComponentLoginForm($name)

natlaid
Člen | 18
+
0
-

chybí tam protected function createComponentLoginForm($name)

Jo, to jsem již také doplnil (Napadlo mě to), ale doopravdy mě zajímá kde se vezme ta proměnná?

redhead
Člen | 1313
+
0
-

při volání té továrničky si to nette bere z hodnoty uvedené v macru

arron
Člen | 464
+
0
-

Btw. v te puvodni funkci byla chyba ve velikosti pismen v nazvu komponenty, proto to nefungovalo :-)

Mikulas Dite
Člen | 756
+
0
-

To magické jsem myslel tak, že se továrnička s tím parametrem volá, to co psal redhead jsem zapomněl uvést. Díky.