Multiplier >setDefaultValue
- vanaveno
- Člen | 144
Ahojte, řeším problém s defaultním nastavením hodnoty vytažené z databáze, hází mi to Trying to get property of non-object
Omlouvám se, ale s Multiplierem, ještě nemám zkušenosti. Hodnoty do
databáze mi normálně zapisuje, ale když je chci v inputu zobrazit, hází
mi to hláškuto není object. Kde dělám prosím chybu.
Děkuji za pomoc
<?php
protected function createComponentCategoryMarge(): Multiplier
{
return new Multiplier(function ($categoryCatId) {
$marge = $this->priceManager->getMarge()->where('catId', $categoryCatId)->fetch();
$form = new Nette\Application\UI\Form;
$form->addText('margeProc', 'Marže v %:')
->setDefaultValue($marge->margeProc); <-- zde je problém
$form->addHidden('categoryCatId', $categoryCatId);
$form->addSubmit('send', 'Nastav');
$form->onSuccess[] = [$this, 'categoryMargeSucceeded'];
return $form;
});
}
?>
Editoval vanaveno (23. 1. 2020 20:17)
- Šaman
- Člen | 2667
S Nette Database Table zas tak moc nedělám, ale není problém v tom
->fetch();
a následně $marge->margeProc
?
Zkoušel jsi to dumpovat? Fetch myslím vrací už hodnotu nad kterou už nejde
volat property. Tedy zkus odstranit ten fetch.
Obecně si dumpni co je v tom $marge
. Taky se může stát, že
databáze žádnou nenašla…
Editoval Šaman (23. 1. 2020 20:57)
- Kamil Valenta
- Člen | 822
Zkontroluj si, jaké $categoryCatId tomu předhazuješ. Patrně tam jde i něco, k čemu priceManager žádný záznam nevrátí, ->fetch() pak vrátí false a nad ním se snažíš o ->margeProc, proto ta chyba.
Buď si zajisti, že budeš v $categoryCatId předhazovat jen platná id, nebo si to po fetch() obal do:
if ($marge) {
...
}
- vanaveno
- Člen | 144
Díky bylo to ono. Některé inputy byly prázdné. Já už mám dneska dost a přitom ten samý problém, jsem řešil v něčem jiném a přišel jsem na to, ale tady už mě to nenapadne. Nic končím
Každopádně dík za pomoc, je dobře že to někomu ještě pálí aniž by do toho viděl :)
kamil_v napsal(a):
Zkontroluj si, jaké $categoryCatId tomu předhazuješ. Patrně tam jde i něco, k čemu priceManager žádný záznam nevrátí, ->fetch() pak vrátí false a nad ním se snažíš o ->margeProc, proto ta chyba.
Buď si zajisti, že budeš v $categoryCatId předhazovat jen platná id, nebo si to po fetch() obal do:
if ($marge) { ... }