Latte foreach $res as $key ⇒ $val
- Joacim
- Člen | 229
Mám pole objektů z ORADB
array (3) ▼
0 => stdClass #b8db ▼
den => "01-04-2015 00:00:00" (19)
prichod => "01-04-2015 08:19:40" (19)
odchod => "01-04-2015 16:57:11" (19)
1 => stdClass #5b40 ▼
den => "02-04-2015 00:00:00" (19)
prichod => "02-04-2015 08:09:05" (19)
odchod => "02-04-2015 16:42:34" (19)
2 => stdClass #ca37 ▼
den => "03-04-2015 00:00:00" (19)
prichod => "03-04-2015 12:36:23" (19)
odchod => NULL
A potřeboval bych v latte template jednoduše použít
{foreach $all_days as $o => $day}
<tr>
<td>{$day->den}</td>
<td>{$day->prichod}</td>
<td>{$day->odchod}</td>
</tr>
{/foreach}
nebo
{foreach $all_days as $day}
<tr>
<td>{$day->den}</td>
<td>{$day->prichod}</td>
<td>{$day->odchod}</td>
</tr>
{/foreach}
Bohužel vždy dostanu hlášku Array to string conversion
Je nějaký způsob jak to vypsat normálně bez prasení kodu ?
Kontrolní výpis v presenteru mi funguje
foreach ($incom as $k => $v) {
var_dump($v->den);
}
Nebo mi stačí použít jiný způsob uložení(hierarchii) dat v presenteru (posílám do template latte foreach data ve špatném formátu) nebyla pro použití s foreach v latte napsana nějaká pomocná třída nebo něco podobného?
Pro připojení k ORADB používám OCI8 (ne PDO_OCI ani DIBI), jelikož mi ani jedno z již zmíněných nefungovalo a pole objektů vytvářím takto
$res -> // oci_fetch_all()
$incom = array();
$x = 0;
foreach ($res as $r) {
$object = new \stdClass();
$object->den = $r['DEN'];
$object->prichod = $r['PRICHOD'];
$object->odchod = $r['ODCHOD'];
$incom[$x] = $object;
$x++;
}
return $incom;
Editoval Joacim (3. 4. 2015 14:53)
- Joacim
- Člen | 229
Data z Oraclu si načítám na začátku(při přihlášení), jelikož mám délku přihlášení nastavenou na 2 hodiny, kvůli obnově dat a malé zátěže pro Ora DB, Presenter pro výpis příchodů a odchodů mám tento
class HistoryPresenter extends BasePresenter{
public function renderDefault() {
$this->template->all_days = $this->getUser()->getIdentity()->all_days;
}
}
Výpis z laděnky
Notice
Array to string conversion search►
Source file ▼
File: .../vendor/latte/latte/src/Latte/Runtime/Filters.php:39
29: * Escapes string for use inside HTML template.
30: * @param mixed UTF-8 encoding
31: * @param int optional attribute quotes
32: * @return string
33: */
34: public static function escapeHtml($s, $quotes = ENT_QUOTES)
35: {
36: if ($s instanceof IHtmlString || $s instanceof \Nette\Utils\IHtmlString) {
37: return $s->__toString(TRUE);
38: }
39: $s = (string) $s;
40: if ($quotes !== ENT_NOQUOTES && strpos($s, '`') !== FALSE && strpbrk($s, ' <>"\'') === FALSE) {
41: $s .= ' ';
42: }
43: return htmlSpecialChars($s, $quotes);
Call stack ▼
1. .../temp/cache/latte/test-app-templates-History-default-latte-ea0b852ae15289da961fe4d784804add.php:17 source ► Latte\Runtime\Filters:: escapeHtml (arguments ▼)
$s
array (3) ▼
0 => stdClass #9608 ▼
den => "01-04-2015 00:00:00" (19)
prichod => "01-04-2015 08:19:40" (19)
odchod => "01-04-2015 16:57:11" (19)
1 => stdClass #45f8 ▼
den => "02-04-2015 00:00:00" (19)
prichod => "02-04-2015 08:09:05" (19)
odchod => "02-04-2015 16:42:34" (19)
2 => stdClass #20b9 ▼
den => "03-04-2015 00:00:00" (19)
prichod => "03-04-2015 12:36:23" (19)
odchod => NULL
$quotes
0
EDIT – bylo to tím že jsem použil v templatu
{dump($all_days)}
což by mě vůbec nenapadlo, že by to mohlo být tímto a čekal bych minimálně hlášku jako u zapomenutého var_dumpu
Nechápu, proč na každou chybu musím přijít až po tom co se tu jak blbec zeptám
Editoval Joacim (3. 4. 2015 16:07)
- Joacim
- Člen | 229
Právě že to data vypsalo, ale bylo to zastíněné chybovou hláškou, kterou jsem vypnul(v pravo nahoře pomocí šipky – ukryl) a daný výstup viděl, proto jsem nevěděl, kde je chyba a furt jsem si myslel, že posílám špatný formát dat do latte foreach
Editoval Joacim (3. 4. 2015 16:45)