onSuccess[] vyhahazuje Cannot read an undeclared property HomepagePresenter
- marcelxy
- Člen | 70
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
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
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
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“
- marcelxy
- Člen | 70
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
- David Grudl
- Nette Core | 8233
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
.