Kdyby\Doctrine – změna výsledků mezi presenterem a latte šablonou
- MichalHaltuf
- Bronze Partner | 14
Ahoj,
už podruhé jsem narazil na záhadný problém, jehož původu se nemohu
dopátrat.
Princip byl v obou případech stejný. V presenteru zavolám
public function actionDefault() {
/** em je Kdyby\Doctrine\EntityManager */
$var = $this->em->createQueryBuilder()->....->getQuery()->getResult();
$this->template->var = $var;
}
S proměnnou $var pak už nic nedělám. Problém je, že v šabloně je její obsah úplně jiný, než v presenteru! Někde se po cestě jaksi magicky změní a já nevím proč.
Konkrétně když za předchozí kód dám v presenteru:
var_dump($var);
ukáže se
array(24) {
[0] =>
array(2) {
[0] =>
class App\Models\Location#199 (5) {
protected $tours =>
class Doctrine\ORM\PersistentCollection#216 (9) {
...
}
protected $country =>
class App\Models\Country#220 (6) {
...
}
protected $area =>
string(4) "Neum"
protected $place =>
string(4) "Neum"
private $id =>
string(1) "8"
}
'region_count' =>
string(1) "1"
}
...
tedy 24 výsledků, každý z nich pole o dvou klíčích, 0 a ‚region_count‘.
Když dám v latte šabloně {php var_dump($var);} tak už je to:
array(24) {
[0] =>
class App\Models\Location#199 (5) {
protected $tours =>
class Doctrine\ORM\PersistentCollection#216 (9) {
private $snapshot =>
array(0) {
...
}
private $owner =>
...
private $association =>
array(16) {
...
}
private $em =>
class Kdyby\Doctrine\EntityManager#12 (14) {
...
}
private $backRefFieldName =>
string(9) "locations"
private $typeClass =>
class Kdyby\Doctrine\Mapping\ClassMetadata#200 (41) {
...
}
private $isDirty =>
bool(false)
protected $collection =>
class Doctrine\Common\Collections\ArrayCollection#217 (1) {
...
}
protected $initialized =>
bool(false)
}
protected $country =>
class App\Models\Country#220 (6) {
protected $code =>
string(3) "BIH"
protected $name =>
string(19) "Bosna a Hercegovina"
protected $url =>
string(19) "bosna-a-hercegovina"
protected $weather =>
string(0) ""
protected $active =>
bool(true)
private $id =>
string(2) "24"
}
protected $area =>
string(4) "Neum"
protected $place =>
string(4) "Neum"
private $id =>
string(1) "8"
}
...
Tedy někam se mi záhadně ztratil u každého výsledku klíč ‚region_count‘. Používám Nette ^2.4, php 7.1, kdyby/doctrine ^3.2
- David Matějka
- Moderator | 6445
to se mi nejak nezda. kdyz dumpnes treba v afterRender promennou
$this->template->var
tak je to jeste OK?
zkousel si tu promennou prejmenovat, jestli tam nekde neni kolize?
- MichalHaltuf
- Bronze Partner | 14
Proměnná se jmenuje ve skutečnosti $used_countries
,
pochybuji, že by tam byla nějaká kolize :-) Ale přejmenování
nepomáhá.
Dump v afterRender()
ukazuje původní správnou verzi.
Editoval MichalHaltuf (12. 12. 2017 17:39)