CakePHP 2: Внедрение плагина CakePDF от Ceeram

Я пытаюсь реализовать плагин CakePDF, разработанный Ceeram.

Я использую CakePHP 2, и я работаю локально, используя wamp на Vista. Я следил за всем, начиная с файла readme, но в какой-то момент меня застрял.

Сначала мне хотелось бы преобразовать HTML-ссылку в PDF, используя движок WkHtmlToPdf. Я вижу, что у многих людей есть проблемы, чтобы заставить его работать, поэтому я подробно расскажу о следующих шагах.


ШАГ 1: CakePdf-плагин от Ceeram

Я загрузил плагин на https://github.com/ceeram/CakePdf Я извлек содержащуюся папку в приложение/Plugin/CakePdf


ШАГ 2: Bootstrap

Я добавил следующие строки: app/Config/bootstrap.php:

CakePlugin::load('CakePdf', array('bootstrap' => true, 'routes' => true));

Configure::write('CakePdf', array(
    'engine' => 'CakePdf.WkHtmlToPdf'
    ),
    'orientation' => 'portrait',
    'download' => true
));

ШАГ 3: Контроллер

Я создал свой контроллер «InvoicesController.php» - приложение/Контроллер/InvoicesController.php:

класс InvoicesController расширяет AppController {

    public $components = array('RequestHandler');

    public function view($id = null) {

        $this->Invoice->id = $id;

        if (!$this->Invoice->exists()) {
            throw new NotFoundException(__('Invalid invoice'));
        }

        $this->pdfConfig = array(
            'orientation' => 'portrait',
            'filename' => 'Invoice_' . $id
            );

        $this->set('invoice', $this->Invoice->read(null, $id));
    }
}

ШАГ 4: Просмотр

Я создал папку pdf в моей папке просмотра и создал view.ctp в приложении/View/Invoices/pdf/view.ctp.


ШАГ 5: Макет

Я создал папку pdf в моей папке макета и создал приложение/View/Layouts/pdf/default.ctp


Вот и все. На мой взгляд, я не могу сделать PDF-файл с URL-адресом. Хотя я должен упомянуть, что я новичок в ООП и CakePHP, поэтому я был бы очень благодарен, если бы вы могли показать мне, как это сделать. Я уверен, что это поможет другим, потому что там много новичков, таких как я, которые хотят это сделать, а потому, что все это предназначено для продвинутых программистов, мы не можем понять, как собрать эти штуки.

Большое вам спасибо за ваше понимание и вашу помощь!

[ЭТОТ ПОСЛЕДНИЕ ИЗМЕНЕНЫ КАЖДОЕ ВРЕМЯ - НОВЫЙ ОТВЕТ, КОТОРАЯ УЛУЧШАЕТ ЭТО]

1
nl ja de
Обратитесь к разработчику плагина, если документация неверна.
добавлено автор Martin Bean, источник
Я также сталкиваюсь с проблемой с этим плагином. Ошибка отсутствия видимости: вид для InvoicesController :: view() не найден. Ошибка: подтвердите, что вы создали файл: D: \ wamp \ www \ sports \ app \ View \ Invoices \ view.ctp Примечание. Если вы хотите настроить это сообщение об ошибке, создайте приложение \ View \ Errors \ missing_view.ctp
добавлено автор Puzzled Boy, источник
я следую всем шагам
добавлено автор Puzzled Boy, источник
Привет! Как установить wkhtmltopdf, чтобы он работал на моем сайте cakephp? @Ceeram
добавлено автор Leah, источник
как вы к нему обращаетесь? какой именно URL? также, что именно происходит?
добавлено автор mark, источник
почему вы переименовали его в CakePDF? CakePdf верен
добавлено автор Ceeram, источник
@MartinBean Он уже знал об этом сообщении, прокомментировал и ответил также
добавлено автор Ceeram, источник
@mark: Я получаю доступ с помощью localhost/CakePHP/invoices/view/1.pdf и получаю 500 ошибок, даже если я пытаюсь использовать localhost/invoices/view/1.pdf с помощью Router :: mapResources (array ('Invoices')); в файле маршрутов, расположенном в папке config. AT-> Ceeram: Я отредактировал свое оригинальное сообщение, чтобы исправить эту ошибку.
добавлено автор Julian Livin' in China, источник
Я так сделал с тканью. Это отличная инфраструктура, но есть слишком много шансов сделать ошибку в коде. Это происходит слишком часто, и иногда я трачу часы, пытаясь найти его. Поэтому я перешел в Wordpress, что намного лучше для моих нужд, и теперь я создаю собственные темы. Гораздо веселее и легче, чем трюк.
добавлено автор Julian Livin' in China, источник

2 ответы

Вам нужно добавить компонент RequestHandler и перейти на localhost/invoices/view/1.pdf

Похоже, я забыл упомянуть, чтобы добавить компонент RequestHandler в readme.

Также для WkHtmlToPdf вам нужно указать, где это можно найти, и поскольку вы находитесь в окнах, местоположение по умолчанию наверняка не сработает для вас. Вы можете установить местоположение с помощью Configure :: write ('CakePdf.binary', 'C: \ Program Files \ wkhtmltopdf \ wkhtmltopdf.exe') после установки его на окна

1
добавлено
Router :: mapResources (массив ( 'Счета-фактуры')); сделают маршруты отдыха, поэтому вы сможете получить доступ к тому же счету в localhost/invoices/1.pdf вместо. Вы можете попробовать с одним, если включены двигатели в первую очередь. Для wkhtmltopdf вам нужно установить это, для readme есть ссылка для этого.
добавлено автор Ceeram, источник
Спасибо Цераму. Я только что редактировал свое первоначальное сообщение, включая «public $ components = array (« RequestHandler »); в моем контроллере. О WkHtmlToPdf, как я могу указать, где он находится? Вы имеете в виду, что это не будет работать на окнах? Не могли бы вы быть более конкретными, я очень благодарен вам за помощь, спасибо за это! В любом случае, пока я получаю ошибку 500, когда пытаюсь получить доступ к localhost/CakePHP/invoices/view/1.pdf, даже если я попробую localhost/invoices/view/1.pdf с помощью Router :: mapResources (array ('Invoices «));
добавлено автор Julian Livin' in China, источник

Вам не хватает этого кода в app/config/routers.php

Router :: parseExtensions (); Router :: setExtensions (массив ('json', 'xml', 'rss', 'pdf'));

details available on: http://www.dereuromark.de/2014/04/08/generating-pdfs-with-cakephp/

0
добавлено