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.