Defaultni handle v komponente

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

Zdravim,

vytvarim si komponentu:

class CommentsComponent extends Control
{
    public function __construct()
    {
	...
    }

    // ...

    public function handleDelete($id)
    {
      //...
    }

    public function handleDefault()  //???; pro prohlizeni
    {
      //...
    }

    public function render()
    {
        $this->template->allComments = $this->allComments;
        $this->template->form = $this->form;
        return $this->template->render();
    }

}

v sablone mam:

{widget comments}

Problem je, ze nevim, jaky je defaultni handle u takoveto komponenty (zkousel jsem default a nefunguje, zkousel jsem i pouhe public function handle a take nefunguje), do tohoto handle bych chtel pridat nacteni vsech komentaru. Mohl bych nacitani komentaru dat samozrejme do metody render(), ale to se mi nelibi. Jak to tedy udelat?

Diky za pomoc!

Editoval MartyIX (14. 10. 2010 17:39)

Majkl578
Moderator | 1364
+
0
-

Řekl bych, že tahle myšlenka není kompatibilní s myšlenkou toho jak signály fungují (aplikace může přijmout pouze jeden signál, nehledě na to kolik komponent má).
Zdá se mi, že se do komponentových signálů snažíš napasovat to jak fungují akce presenterů, mám pravdu?

MartyIX
Člen | 217
+
0
-

Mozna ano, ale ja vlastne jen hledam, kam dat vychozi logiku komponenty. Kdyz se nezpracovava zadny handle, tak nekde tu logiku musim mit, jenze kde? V konstuktoru je to hloupost, protoze ten probehne pred vsemi handly. Zbyva asi beforeRender.. ale tam asi taky nepatri logika.

jasir
Člen | 746
+
0
-

beforeRender v Controlech neexistuje, jen v Presenteru.
Logiku nech v render<Something> metodách a handlerech handle<Signal> zpracovávajících signály.

Editoval jasir (14. 10. 2010 19:51)

arron
Člen | 464
+
0
-

Resp. logiku dej do nejake (vhodne pojmenovane funkce) uvnitr komponenty a v renderu ji proste zavolej:-)