Back to top

Autore Topic: J3.0 PDF in custom component  (Letto 1288 volte)

mau_develop

  • Visitatore
J3.0 PDF in custom component
« il: 28 Feb 2013, 11:32:14 »
.... more quick than dirty! :)

Poi affinatelo voi, prendetelo come un'idea per chi non sa come fare.
Io l'ho fatto ad un amico in amministrazione ma non dovrebbe essere diverso farlo anche lato site...

Prima cosa scaricare una classe per pdf, io ho usato TCPDF.
La cartella che scaricate contiene un sacco di roba inutile al momento della messa online ma quello lo vedete sul sito dello sviluppatore della classe, così come la sua conf e struttura che nulla ha a che fare con joomla e queste due righe di tutorial.
Io solitamente uso una cartella "assets" all'interno della cartella del mio componente, quindi com_xxxx/assets/tcpdf/

Nella vista lista (s) del componente, nel template, creiamo il pulsante per il bootstrap
Codice: [Seleziona]
$html = '<a href="'.JRoute::_('index.php?option=com_xxxx&task=xxxxs.printpdf&tmpl=component&xid='.$item->id).'" class="btn btn-micro hasTooltip active" title="'.JText::_('PDF').'"><i class="icon-print"></i></a>';
Il bottone chiama una task "printpdf" del controller (s) che andiamo a scrivere:
Codice: [Seleziona]
public function printpdf(){
       
        $xid = JFactory::getApplication()->input->get('xid', 0, 'int');
        // Get the model
        $model = $this->getModel();
        $model->makePDF($xid);
        // Close the application
        JFactory::getApplication()->close();
       
    }
ATTENZIONE: se guardate in alto al controller se non passo il model, di default il model è quello dell'item non della list come uno si aspetterebbe... è un modo di joomla per lavorare con entrambi i model...

quindi il metodo makePDF($xid); andrà implementato nel model item... infatti è un item che a noi serve recuperare dal db,

Codice: [Seleziona]
public function makePDF($pk){
     
        $pdfdata = $this->getItem($pk);
       
        require_once JPATH_COMPONENT.'/assets/tcpdf/config/lang/eng.php';
        require_once JPATH_COMPONENT.'/assets/tcpdf/tcpdf.php';

//----------------------------------------------------------------------------

ESEMPIO TCPDF QUI - EXAMPLE TCPDF FILE HERE

or

require_once JPATH_COMPONENT.'/helpers/Tuo_Helper.php';

//----------------------------------------------------------------------------
}

... ecco, la parte più dirty è questa perchè non ho voglia di fare altro ma in quel punto potete mettere una metodo statico che lascia più pulito il codice del model e fare tutto nel metodo statico (passando ovviamente i dati dell'item

Aprite un file qualsiasi..io ho usato il 48... e copiate il codice dove indicato, TRALASCIANDO ovviamente il tag php e i due include che ho indicato gia sopra (occhio alla path)

Basta, funziona ora abbellimenti, miglioramenti ... roba vostra ;)

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
Re:J3.0 PDF in custom component
« Risposta #1 il: 03 Mar 2013, 10:39:33 »
Grazie Mau... un'ottima base sulla quale cominciare.
Messo tra i preferiti e appena posso lo testerò in un componente che sto creando  ;)

tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

mau_develop

  • Visitatore
Re:J3.0 PDF in custom component
« Risposta #2 il: 03 Mar 2013, 15:24:24 »
... se invece ti serve fare delle join o elaborare il risultato della query prima di passarlo alla vista conviene usare o il model list o un metodo statico da mettere nell'helper

 



Web Design Bolzano Kreatif