Używanie zewnętrznych klas/bibliotek w CakePHP
Pokażę jak w CakePHP korzystać z zewnętrznych bibliotek. W przykładzie wykorzystam bibliotekę TCPDF służącą do generowania dokumentów pdf. Pobieramy bibliotekę i rozpakowujemy ją do katalogu app/Vendor. Właśnie w tym katalogu powinno się trzymać wszystkie zewnętrzne skrypty. Jeśli wypakowaliśmy bibliotekę prawidłowo powinniśmy mieć następującą ścieżkę do pliku tcpdf.php app/Vendor/tcpdf/tcpdf.php. Następnie w katalogu app/Vendor stwórz nowy plik np. o nazwie mypdf.php o następującej zawartości.
App::import('Vendor','tcpdf/tcpdf'); class MYPDF extends TCPDF { //Page header public function Header() { if ($this->page != 1) { // Logo $image_file = dirname(__FILE__) . '/../webroot/img/pdf_top.jpg'; $this->Image($image_file, 0, 0, 210, 30, '', '', '', false, 300, '', false, false, 0); // Set font $this->SetFont('helvetica', 'B', 15); $this->SetDrawColor(153, 209, 170); } } // Page footer public function Footer() { } }Jest to rozszerzenie klasy TCPDF. Przeciążamy np. metodę Header - dodajemy logo, określamy czcionkę itd. Nie omawiam tutaj szczegółów biblioteki TCPDF. Jeśli chcesz dowiedzieć się więcej o tworzeniu dokumentów pdf w TCPDF odsyłam do dokumentacji http://www.tcpdf.org/docs.php. Następnie stwórzmy akcję generate_pdf() w kontrolerze, w którym chcemy generować pdf. Akcja może wyglądać na przykład tak.
public function generate_pdf() { App::import('Vendor', 'mypdf'); $pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('Imie i nazwisko'); $pdf->SetTitle('Tytul'); $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); $pdf->SetAutoPageBreak(false, 0); $pdf->AddPage('P', '', false, false); $pdf->writeHTMLCell(0, 0, '', 65, 'Lorem Ipsum', 0, 1, 0, true, 'C', true); $pdf->writeHTMLCell(0, 0, '', 73, 'Dolor', 0, 1, 0, true, 'C', true); $pdf->writeHTMLCell(0, 0, '', 81, 'Example text', 0, 1, 0, true, 'C', true); $pdf->Output('plik.pdf', 'D'); }Importujemy najpierw stworzony przez nas plik mypdf.php. W treści akcji generujemy przykładowy dokument pdf. Opcja 'D' w metodzie Output oznacza aby zapisywać plik na dysk. W celu wygenerowania/pobrania pliku w przeglądarce wywołujemy url do naszej akcji tzn. nazwa_kontrolera/generate_pdf/ np. items/generate_pdf/.