->ref a fatalní error 500

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

Ahoj, máme problém, že při použití metody ref(). Čas od času dostanem error 500 a to úplný error 500 né ten od nette. Opraví to smazaní cache, ale problém se opakuje.

Díky za nápady.

Majkl578
Moderator | 1364
+
0
-

Zkontroluj logy Apache/PHP/kernelu, jestli nejde o SIGSEGV nebo jiný crash. Pokud ano, pak bych prvně podezříval nějakou rozbitou opcode cache (APC bývá dost zabugované).

johnygemityg
Člen | 30
+
0
-

Bohužel mi hosting takovou kontrolu neumožňuje. Nemá někdo jiný nápad či zkušenost ?

Editoval johnygemityg (8. 3. 2014 14:55)

johnygemityg
Člen | 30
+
0
-

Přináším další info.

{dump $event->ref('subject')}
array (1)
"$event->ref('subject')" => Nette\Database\Table\ActiveRow #4f44
table private => Nette\Database\Table\Selection #de0d
data private => array (3)
id => 11
short => "OBD" (3)
teacher_id => NULL
dataRefreshed private => FALSE
isModified private => FALSE

To co je v data, je dostupné bez problému, bohužel tam i něco chybí.
Pokud však

{foreach $event->ref('subject') as $val}{$val}{/foreach}

Tak se vypíše vše ok.

Nějaká idea ?

Dočasně jsem to vyřešil:

{foreach $event->ref('subject') as $key => $val}{if $key == "name"}{$val}{/if}{/foreach}

Ale to je dost kostrbaté…

Editoval johnygemityg (11. 3. 2014 15:23)

johnygemityg
Člen | 30
+
0
-

Téma stále aktuální … Nikdo se nesetkal s ničím podobným ?

ondrejsotek
Člen | 7
+
0
-

Mě to dělá taky, vyřešil jsem to přesunutím ref() z latte značky do proměnné v render metodě a přestalo to.

Původní kód v latte šabloně který vyhazoval segfault:

{$orderh->ref('payments','payid')->descr}

Upravený kód – render():

$template->payments = $this->orderh->ref('payments','payid');

Latte šablona:

{$payments->descr}