PHP Nette - jak upravit data z databáze před odesláním do šablony
Ahoj, jsem úplný začátečník s PHP Nette, prošel jsem celý návod jak udělat jednoduchý web, to mi funguje. Ten návod ale neřeší jak postupovat, když potřebuji data z databáze upravit před odesláním do latte šablony. Nevím jak to udělat a jak vlastně správně postupovat. Poradíte někdo jak ty data z databáze před odesláním upravit? Díky
Ahoj,
níže nalezneš základní PHP kostru pro Nette (jedna z mnoha), kdy můžeš data z databáze před odesláním do šablony Latte libovolně upravovat.
Správně bys ty data měl upravovat v modelu, ale pro zjednodušení to uděláme v presenteru.
Popis principu:
Všechna data z tabulky načteš v presenteru/modelu do pole a to pole rovnou zpracuješ cyklem foreach a upravíš hodnoty jak potřebuješ (použival jsi určite doposud při výpisu z MySQL databáze běžně). Pole s daty až pak posíláš do šablony latte a tam je projedeš zase cyklem foreach při vypsání.
ODPOVĚĎ
Ahoj,
níže nalezneš základní PHP kostru pro Nette (jedna z mnoha), kdy můžeš data z databáze před odesláním do šablony Latte libovolně upravovat.
Správně bys ty data měl upravovat v modelu, ale pro zjednodušení to uděláme v presenteru.
Popis principu:
Všechna data z tabulky načteš v presenteru/modelu do pole a to pole rovnou zpracuješ cyklem foreach a upravíš hodnoty jak potřebuješ (použival jsi určite doposud při výpisu z MySQL databáze běžně). Pole s daty až pak posíláš do šablony latte a tam je projedeš zase cyklem foreach při vypsání.
public function renderDetail($id)
{
//nacist vsechny zaznamy z databaze do pole
$zaznamy = $this->database->fetchAll('SELECT * FROM tabulka');
//upravit data
foreach ($zaznamy as $id => $row)
{
//ulozeni vystupu do pole
$zaznamyArr[] = (object) [
'nazev' => $row['nazev'],
'popis' => $row['popis'],
'castka' => $row['castka'],
'dastkaDPH' => $row['castka'] * 1.21,
'datum' => $row['datum'],
];
}
// poslat upravena data do sablony:
$this->template->zaznamy = $zaznamyArr;
}