nefungující widget (name ‚box‘ does not exist)

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

Dobrý den,
mám vytvořený widget pomocí createComponentBox která je v basepresenteru, a po zavolání v šabloně dojde k

InvalidArgumentException
Component with name ‚box‘ does not exist.

Pokud jsem dobře pročítal forum, je to tím, že v componentě (widgetu) mám jen string, tj. return „text k vypsání..“;

Jak to udělat správně?
Děkuji

Editoval onny (4. 10. 2010 8:32)

h4kuna
Backer | 740
+
0
-

onny napsal(a):
Pokud jsem dobře pročítal forum, je to tím, že v componentě (widgetu) mám jen string, tj. return „text k vypsání..“;

Ahoj to je špatně musíš vracet instanci třídy Control a napsat si metodu render().

přiklad:

<?php
class myControl extends Control
{
 public function render()
 {
  return 'Hello world';
 }
}

//v presenteru
public function createComponentBox()
{
 return new myControl;
}

//v šabloně
{control box}

?>

Editoval matata (4. 10. 2010 8:50)

onny
Člen | 67
+
0
-

To bude ono, díky!

Patrik Votoček
Člen | 2221
+
0
-

popřípadě ji attachnout rovnou v presenteru:

//v presenteru
public function createComponentBox($name)
{
 new myControl($this, $name);
}