validace, transformace, a práce s daty sloupců
- Senfix
- Člen | 8
Ahoj,
poměrně často při programování potřebuji data získané z databáze
nějakým způsobem sloučit transformovat atd. (například při výpisu url
adresy produktu potřebuju doplnit url skupiny). MOmentálně to řeším dost
těžkopádně takto:
v Active row do funkce &__get na začátku doplním
try{
return \Nette\ObjectMixin::get($this->getTable(), $key);
}catch(\Exception $e){
}
v modelu nadefinuji getter
public function getUrl(){
$skupina = '';
$pUrl = '';
if($this->valid()){
$pUrl = $this->current()->url;
$skupina = \Nette\Environment::getContext()->createSkupina()
->get($this->current()->id_skupiny);
}
$nadUrl = '';
if($skupina){
$nadUrl = $skupina->url.'/';
}
return $nadUrl.$pUrl;
}
potom už v latte šabloně stačí zavolat
{foreach $produkty as $produkt}
<li><a href="{$produkt->url}">{$produkt->nazev}</a></li>
{/foreach}
Chápu že tenhle konkrétní případ by se měl vyřešit relací ale je to pouze příklad jsou problému podobného typu které vůbec s relacemi nesouvisí (validace dat z databáze, výpis krátkého popisu nebo dlouhého pokud neexistuje krátký, atd…)
Problém je v tom že se mi tenhle způsob zdá trochu těžkopádný a navíc nechci moc zasahovat do kodu Nette abych při každé aktualizace nemusel tyhle úpravy dělat stále dokola a navíc přístup k datům v gettru se mi zdá poněkud složitý takže se ptám jestli neexituje jednodušší řešení mého problému.