Odkaz na jiný presenter v komponentě

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

Dobrý den, mám komponentu EditProfileControl. Tuto komponenetu vytvářím v AccountPresenter. v její šabloně pak mám odkaz na změnu hesla:

<a n:href="Account:changePassword">Změnit heslo</a>

Odkazuje na presenter Account. při spuštění té komponenty je vyhozena výjimka InvalidArgumentException: Component with name ‚Account‘ does not exist.
Account není žádná komponenta, ale presenter.

Account presenter vypadá takto:

class AccountPresenter extends BasePresenter{

    public function startup() {
        parent::startup();
    }

    public function renderChangePassword(){
        //šablona pro změnu hesla
    }

    public function renderProfile(){
        $this->title = "Editovat profil";
        $this->subtitle = $this->user->name;
    }

    protected function createComponentEditProfile(){
        $form = new \App\Control\EditProfileControl($this->user);
        $form->UserService = $this->userManager;
        return $form;
    }
}

Potřebuju se z komponenty odkazovat na metodu v presenteru ve kterém tu komponentu vytvářím. jak to udělat?
Díky za radu.

Michal Vyšinský
Člen | 608
+
+1
-

Z komponenty musíš odkaz vytvořit přes makro {plink}:

<a href="{plink Account:changePassword}">Změnit heslo</a>

Komponenty vytváří v šablonách odkazy (při použití {link} nebo n:href) na vlastní signály.

bluray
Člen | 178
+
0
-

Aha takže když chci odkazovat na presenter, tak plink?
a když použiji link, tak to vede pouze na signál? a metodu signálu vytvářím kde? ve tříde komponenty nebo v presenteru kde mám metodu createComponent?

Pavel Macháň
Člen | 282
+
+1
-

bluray napsal(a):

Aha takže když chci odkazovat na presenter, tak plink?
a když použiji link, tak to vede pouze na signál? a metodu signálu vytvářím kde? ve tříde komponenty nebo v presenteru kde mám metodu createComponent?

V komponente je {link ..} nebo n:href pro signál té komponenty. Pokud potřebuješ vytvořit link mířící na presenter tak {plink …}