onSuccess[] vyhahazuje Cannot read an undeclared property HomepagePresenter

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

Prosim neví někdo kde mám hledat problém když mi při načítání page s formem se mi zastavi na
$form->onSuccess[] = $this->addNewContact; a vyhodí chybu
„Cannot read an undeclared property HomepagePresenter::$addNewContact.“ ikdyž vůbec k žadnemu odeslaní formu jeste nedošlo!?? a proč ji vůbec chápe jako property?? když to je metoda!?? a když mu přidám () tak ji pak sice zavolá ale už při načítání toho formu ne až při odeslání!! a když ten řádek vyhodím tak mi pak bezproblému stránku i form načte ale pak už zas neodešle! kde mám hledat problém?????? diky za rady.

vvoody
Člen | 910
+
0
-

To že ty napíšeš $this->addNewContact a vráti to callback nieje featura php, to všetko zabezpečuje Nette\Object od ktorého skoro všetko v Nette dedí. Problém je v tom že tvoja metóda nieje public. Aby sa callback vytvoril (čo musí už pri samotnom zostavovaní formu bez toho aby bol odoslaný) musí tá metóda existovať a byť public.

marcelxy
Člen | 70
+
0
-

diky za radu ale to jsem se sice v dokumentaci nedočetl že to musi být public ale asi proto že to všechno dědí,ale to jsem samozdřejmě zkoušel taky a dělá to i přesto!!už si nevím rady pořád hláška
„Cannot read an undeclared property HomepagePresenter::$addNewContact.“ i když samozdřejmě pro to metoda existuje! takže fak už nevím kde muže být problém ?? ale ještě jedna divná věc že routr v laděnce ukazuje „do = contaktFormAdd-submit“ což si myslím že asi není dobře? když ještě k odeslaní nedošlo! ale neví jak to nastavit aby to nedělal??

David Matějka
Moderator | 6445
+
0
-

takze: v HomepagePresenter mas public metodu addNewContact, jo?

pokud to nefunguje, muzes pouzit:

$form->onSuccess[] = array($this, 'addNewContact');

ten signal „do“ je ok, to znaci, ze se ma provest udalost „submit“ na komponente „contaktFormAdd“

mr.mac
Člen | 87
+
0
-

Pokud se nemýlím, tak standardní použití je toto (metoda addNewContact je public):

$form->onSuccess[] = callback($this, 'addNewContact');

Editoval mr.mac (25. 12. 2013 18:29)

David Matějka
Moderator | 6445
+
0
-

@mr.mac: Nette\Callback v 2.1 a dev je jiz deprecated

mr.mac
Člen | 87
+
0
-

Ok, chápu, přešel jsem na 2.1 před 2 dny, zvykám si.

marcelxy
Člen | 70
+
0
-

ok chlapi diky moc už to jede já sem zkoušel i toto
„$form->onSuccess[] = array($this, ‚addNewContact‘);“ a nejelo to! ale to jsem asi neměl tu metodu public nebot sem to nevěděl že to musí být! Ja totiž používám verzi 2.0.3 ta mi totiž jede všude i na mém NAS! zkoušel jsem 2.1 a ta mi tam nejede ba do konce mi nejede ani na localhostu!!! 2.1 mi tvrdí hned při spuštení"Do not place {$basePath} inside quotes" hned na úvod v layuot.latte v jvsc. sož je teda hodně divné!! ne? proto používám 2.0.3 nebot to je nejvyšší verze kde mi jede i adminer na NAS!. ve vyšších verzích mi nejed pokaždé něco a 2.1 vůbec! takže kdyby někdo věděl proč? nebo jak nato aby jely ty vyšší verze včetně admineru, tak budu rád! mám tam php 5.3.1.díky všem za rady

mr.mac
Člen | 87
+
0
-

Moje zkušenosti s přechodem na Nette 2.1 jsou zde, třeba ti to pomůže.

David Grudl
Nette Core | 8233
+
0
-

Chyba „Do not place {$basePath} inside quotes“ tam chvilku byla, ale už je to opravené. Adminer lze spouštět pouze z localhostu, proto nejede na NAS. Ochranu lze vypnout ve www/adminer/adminer.php.

marcelxy
Člen | 70
+
0
-

jo jo už to jede 2.1 i na NAS měl jsem asi nejakou starši verzi i ten adminer mi funguje dal jsem si tam aktuálni verzi přimo z adminer str.díky za radu.

Editoval marcelxy (26. 12. 2013 13:27)