handler signálu v komponentě
- jannemec
- Člen | 78
Nějak mi nefunguje signál v komponentě.
Nezavolá se mi signál v komponentě
<?php
public function handlefacebookAuthorize(): void {
// Do something
}
?>
A musím to udělat ručně přes
<?php
public function signalReceived(string $signal):void {
if ($signal == 'facebookAuthorize') {
$this->handlefacebookAuthorize();
}
parent::signalReceived($signal);
}
?>
Předpokládám, že je to nějaká prkotina, ale nemohu na ní
přijít …
JN
- jannemec
- Člen | 78
MajklNajt napsal(a):
Pripadne skús názov metódy zmeniť na
handleFacebookAuthorize
To jsem samozřejmě zkoušel … ale ona připojená je – protože ten
<?php
public function signalReceived(string $signal):void {
if ($signal == 'facebookAuthorize') {
$this->handlefacebookAuthorize();
}
parent::signalReceived($signal);
}
?>
se zavolá (je to etoda té komponenty ..)
A jinak je to normálně v presenteru přes továrnu vytvořená komponenta
<?php
public function createComponentSocialLogin() {
return new \Controls\SocialLogin($this, 'socialLogin');
}
?>
a konstruktor yé komponenty
<?php
public function __construct($parent = null, $name = null) {
if (is_null($name)) {
$name = 'socialLogin';
}
$this->form = new \Nette\Application\UI\Form();
// Vytvoření toho formuláře
$this->addComponent($this->form, $name . 'frm');
$parent->addComponent($this, $name);
}
?>
- jannemec
- Člen | 78
CZechBoY napsal(a):
A vzdycky volej
parent::__construct();
To mi ale hází chybu
16: class SocialLogin extends \Nette\Application\UI\Control {
17: public function __construct($parent = null, $name = null) {
18: parent::__construct();
19: if (is_null($name)) {
20: $name = ‚socialLogin‘;
Na řádku 18 – chyba „Cannot call constructor“
A tu továrnu mám – je to v presentru
<?php
public function createComponentSocialLogin() {
return new \Controls\SocialLogin($this, 'socialLogin');
}
?>
- Marek Bartoš
- Nette Blogger | 1274
$this->form = new \Nette\Application\UI\Form();
// Vytvoření toho formuláře
$this->addComponent($this->form, $name . ‚frm‘);$parent->addComponent($this, $name);
Takhle ne, pro formulář si vytvoř samostatnou createComponent* metodu. Nech Nette, aby zavolalo addComponent() samo
A vzdycky volej parent::__construct();
Pokud tedy existuje. Což u komponenty od Nette 3 neexistuje, @CZechBoY
A nepřipojuj komponenty do hierarchie v konstruktoru. Připojíš tak při inicializaci komponentu k rodiči, který sám ještě není inicializovaný a připojený k presenteru. Vzniknou ti tak těžko odhalitelné chyby
Editoval Mabar (5. 1. 2020 23:53)