Call to undefined method Nette\Utils\ArrayHash::related()
- jandik.n
- Člen | 41
Ahoj, předem se omlouvám, pokud je můj dotaz úplně začátečnický, ale nevím si rady a možná na to jdu ze špatné strany, každopádně ocením pomoc.
Jedná se o chybové hlášení Call to undefined method Nette\Utils\ArrayHash::related()
Mám vlastní třídu pro generování PDF (pomocí mPDF), kde si vytvořím šablonu:
$tpl = new Nette\Templating\FileTemplate(dirname(__DIR__).'/templates/pdf/price_quote.latte');
Do ní si vložím data projektu:
$tpl->project = $project;
Pak je v šabloně vypisuji bez problému, než potřebuji vytáhnout data z navázené tabulky pomocí fce „related“, kterou zde kód již nezná.
Prosím o radu, jak tuto funkci správně v šabloně použít.
(Když používám klasický presenter a šablonu, tak vše funguje, tak je to asi špatně „prolinkované“, ale nevím.)
Díky!
Editoval jandik.n (11. 6. 2015 14:25)
- jandik.n
- Člen | 41
V presenteru volám fci, kde posílám hodnoty z formuláře:
<?php
$this->priceQuoteMaker->createPriceQuote($values);
?>
Ve tříde priceQuoteMaker mám pak tuto fci:
<?php
public function createPriceQuote($project) {
$tpl = new Nette\Templating\FileTemplate(dirname(__DIR__).'/templates/pdf/price_quote.latte');
$tpl->registerFilter(new Nette\Latte\Engine);
$tpl->registerHelperLoader('Nette\Templating\Helpers::loader');
$tpl->project = $project;
$pdf = new \mPDF('', 'A4', 11, 'arial');
$pdf->ignore_invalid_utf8 = true;
$pdf->setFooter('|'.date('Y')." © www.nk-translators.com|"); // footer
$pdf->WriteHTML($tpl);
$pdfFile = $pdf->Output(dirname(__DIR__).'/../../www/price_quotes/'.$project->number_of_order.'-cenova-nabidka.pdf', 'F');
return;
}
?>
Stačí takto? Díky.
- Pavel Kravčík
- Člen | 1205
Asi bys měl ukázat, kde tedy dostáváš $values.
A tam bude evidetně problém, protože related se volá na activeRow a ne ArrayHash.
- jandik.n
- Člen | 41
Odešlu vyplněný formulář klasicky:
<?php
$form->onSuccess[] = $this->newProjectFormSubmitted;
?>
A poté zde beru $values:
<?php
public function newProjectFormSubmitted(Form $form) {
$values = $form->getValues();
...
$this->priceQuoteMaker->createPriceQuote($values);
?>
Samotnému mně tu začíná něco nesedět, ale ještě nevím :-)
- Pavel Kravčík
- Člen | 1205
Formulář Ti vrací ArrayHash ten nemá related. Takže je to přesně jak říkáš, musíš si to zavolat z modelu a na to můžeš použít ref.