Jak použít komponentu přímo v action v presenteru
- zoool
- Člen | 89
Ahoj napsal jsem si komponentu, která využívá šablony a chtěl jsem se
zeptat jak se dá použít přímo v action?
to znamená
public function actionFaktura($id) {
new Faktura($id);
}
Napíše mi to chybu Component '' is not attached to ‚Nette\Application\UI\Presenter‘. search nevíte prosím jak na to díky
- duke
- Člen | 650
PDF se vrací spíše takto:
$this->sendResponse(new PDFResponse($template));
(PDFResponse lze najít v doplňcích)
Nette\Application\UI\Presenter::terminate již nějakou dobu nepříjímá žádné argumenty.
- zoool
- Člen | 89
Aha, ještě jeden dotaz tak jsem si stáhl z doplňku komponentu na generování faktur a píše to stejnou chybu je to tam asi tak
$invoice = new \InvoiceControl(date('YmdHis'), 'Faktura - daňový doklad č.');
// Definition of miscellaneous attributes
$invoice->setVariableSymbol('1234');
// Definition of DateTimes
$dateNow = new \DateTime();
$invoice->setDateOfIssuance($dateNow);
$dateExp = new \DateTime();
$dateExp->modify('+14 days');
$invoice->setExpirationDate($dateExp);
$invoice->setDateOfVatRevenueRecognition($dateNow);
// Definition of Participants
$supplier = new \MyInvoiceParticipant('Jan Vosáhlo', 'Českobratrská', '11', 'Praha 3 - Žižkov', '13000', '12345678', 'CZ12345678', '123456789 / 1111');
$customer = new \MyInvoiceParticipant('Pepa Pivrnec', 'Někde', '3', 'Praha 9 - Prosek', '19000', '', '', '123456789 / 1111');
$invoice->setSupplier($supplier);
$invoice->setCustomer($customer);
// Definition of Items
$item = new \MyInvoiceItem('Testovací item 1', 1, 900, 1.19, TRUE);
$invoice->addItem($item);
$invoice->addItems(array(
new \MyInvoiceItem('Testovací item 2', 1, 900, 1.19, TRUE),
new \MyInvoiceItem('Testovací item 3', 1, 900, 1.19, TRUE),
));
// Definition of new mPDF
// Set constant and include according to your directories!!
define('_MPDF_PATH', LIBS_DIR . '/MPDF54/');
require LIBS_DIR . '/MPDF54/mpdf.php';
//include_once(LIBS_DIR . '/mpdf2_5/mpdf.php');
//iso...don't know why...utf-8 didn't work
$mpdf = new \mPDF('utf-8');
//$mpdf->WriteHTML("<h1>AHoj</h1>");
//$mpdf->Output(NULL,NULL);
$invoice->exportToPdf($mpdf);
A píše to chybu pořád používám nejnovejší nette 2 děkuji
- duke
- Člen | 650
Ta chyba ti říká, že komponenta nebyla připojena k presenteru. Nejlíp uděláš, když ji vytvoříš přes továrničku:
protected function createComponentInvoice()
{
$invoice = new InvoiceControl;
// @TODO configure invoice
return $invoice;
}
Když s ní pak pracuješ tímto způsobem:
$invoice = $this['invoice']; // což je totéž jako $invoice = $this->getComponent('invoice');
… tak se ti vytvoří a automaticky připojí k presenteru.
Také ji můžeš připojit „ručně“ přes addComponent
,
jak už ti doporučoval Boky.