$row->toArray() illegal offset type

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

Nette mi hlasi nasledujici chybu v authenticatoru: http://develop.hgda.cz/Warning.htm

Stejny authenticator pouzivam v X dalsich projektech kde jede bez problemu.
Pokud $row->toArray() nahradim napr za null vytvori se mi sice prazdna identita ale uzivatel se normalne prihlasi. Nejaky napad proc ActiveRow->toArray() vyhazuje tento warning?

vvoody
Člen | 910
+
0
-

Co tam robi ta nula? $row->Oid
edit: alebo to je O (pismeno) :D v tom fonte ladenky mi to prislo ako nula

Editoval vvoody (10. 9. 2012 20:55)

Jan Mikeš
Člen | 771
+
0
-

Je to O – bohuzel databazi generuje nejaky fakturacni program a jeji struktura je otresna, to neovlivnim :(

vvoody
Člen | 910
+
0
-

Cache premazana? Ja s tym asi nepohnem, mozno niekto iny a urcite by pomohlo, ked uploadnes tu ladenku s neminifikovanym nette ;)

Jan Mikeš
Člen | 771
+
0
-

Hmm, s neminifikovanym nette to frci, ted jsem to vyzkousel, sakra :(

Jan Mikeš
Člen | 771
+
0
-

V cem muze byt problem, kdyz jinde uplne stejny kod i s minified verzi bezi? Je to navrhem databaze?

Editoval Lexi (10. 9. 2012 22:09)

bo
Člen | 16
+
0
-

Potvrzuju problem s minifikovanou verzi. V plnem Nette vsechno funguje spravne a bez ladenky.

resilo se i

Myslite, ze by se na to slo podivat? Ja na to skill nemam a podle me to je zalezitost skriptu, co ma minifikaci na starosti.

Diky moc

Chenny
Člen | 2
+
0
-

Hoj, Nette teprve zkoumám a na tohle jsem taky před pár dny narazil.

Pomohlo mi za ten druhý parametr (NULL) dosadit array s rolemi:
$roles = array('member','admin'); Což asi není ideální řešení, když žádné role nechceš používat a NULL potřebuješ.

row->toArray() mi pak už fungovalo, ale pro změnu mi pomocí unset(row->password) nejde odstranit údaj s heslem a v identity se mi stále zobrazuje (byť v zahashované podobě).
Tak nevím jestli to celé spolu nějak souvisí…

Chenny
Člen | 2
+
0
-

Tak jen pro info: ten problém s nefunkčním unset($row->password); v authentikátoru jsem obešel takto:

<?php
public function authenticate(array $credentials){
 //...
	$rowArrayed = $row->toArray();
	unset($rowArrayed['password']);
	return new NS\Identity($row->id,$roles,$rowArrayed);
}
?>
jansfabik
Člen | 193
+
0
-

Řekl bych, že to bude nějaký bug v cachování u Nette\Database. Zkus prosím dát do config.neon tohle

services:
	nette.database.default:
		setup:
			- setCacheStorage(NULL)

A jestli to pak bude s minified verzí fungovat, tak je problém v cache.