質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • CakePHP

    2518questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

PDF生成ができません。。(エラー:View class "CakePdf.Pdf" is missing)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 343

aaayii

score 7

cakephp3.3をにて、WkHtmlToPdfを使ってPDF生成を行いたいです。
しかし、「View class "CakePdf.Pdf" is missing」とエラーが出てしましい上手くいきません。

---前提---
・WkHtmlToPdfのインストールは完了。
・別プロジェクトからごっそりvendor以下にfriendsofcake/cakepdf...を移動。
・config/bootstrap内に下記追加
・config/routes内に下記追加
・admin/OrderController.php内に下記追加
・admin/Order/pdf/invoice.ctp ←これをPDF化したいです。
・admin/Order/calendar.ctp ←この中のボタンを押して、PDF生成!
・Template/Layout/default.ctpを追加しました。

別プロジェクト(前任者はもういません)ではできるのですが、本プロジェクトから私がやっておりまして調べたかぎりのことは設定してみたんですができません。
friendsofcake/cakepdfをコピーしてきたのがいけないでしょうか。
ご教授よろしくお願いいたします。

**☆追記☆**
下記の通り実行しました。
下にcomposer.jsonを追加記載しました。
既存のcomposer.json内に、「"friendsofcake/CakePdf": "^3.2"」を追加しました!
その後SSHで接続し、まず削除しました。
$composer remove friendsofcake/cakepdf
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 0 updates, 7 removals

  • Removing zendframework/zend-diactoros (1.8.5)
  • Removing psr/log (1.0.2)
  • Removing psr/http-message (1.0.1)
  • Removing friendsofcake/cakepdf (3.5.1)
  • Removing cakephp/chronos (1.2.2)
  • Removing cakephp/cakephp (3.6.10)
  • Removing aura/intl (3.0.0)
    Generating autoload files

次にインストールしました。
$composer require friendsofcake/cakepdf を実行!
Using version ^3.5 for friendsofcake/cakepdf
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 7 installs, 0 updates, 0 removals

  • Installing psr/http-message (1.0.1): Downloading (100%)
  • Installing zendframework/zend-diactoros (1.8.5): Downloading (100%)
  • Installing psr/log (1.0.2): Downloading (100%)
  • Installing aura/intl (3.0.0): Downloading (100%)
  • Installing cakephp/chronos (1.2.2): Downloading (100%)
  • Installing cakephp/cakephp (3.6.10): Downloading (100%)
  • Installing friendsofcake/cakepdf (3.5.1): Downloading (100%)
    cakephp/cakephp suggests installing lib-ICU (The intl PHP library, to use Text::transliterate() or Text::slug())
    friendsofcake/cakepdf suggests installing dompdf/dompdf (If you wish to use the DomPdf engine)
    friendsofcake/cakepdf suggests installing tecnickcom/tcpdf (If you wish to use the Tcpdf engine)
    friendsofcake/cakepdf suggests installing mpdf/mpdf (If you wish to use the Mpdf engine)
    Writing lock file
    Generating autoload files

このように表示されました。
vendor以下を確認しても追加されてません。

bootstrap.php

Plugin::load('CakePdf', ['bootstrap' => true, 'routes' => true]);
Configure::write('CakePdf', [
                'engine' => ['className' =>'CakePdf.WkHtmlToPdf',
                    'binary' => '/usr/local/bin/wkhtmltopdf',
                ],
                'options' => [
                    'print-media-type' => false,
                    'outline' => true,
                    'dpi' => 96
                ],
                'margin' => [
                'bottom' => 5,
                'left' => 10,
                'right' => 10,
                'top' => 5
                ],
                //        'orientation' => 'landscape',
                'orientation' => 'portrait',
                'download' => false
                ]);


routes.php

Router::defaultRouteClass(DashedRoute::class);
Router::extensions(['pdf','json','xml','ajax']);
Router::prefix('admin',function($routes) {
    $routes->extensions(['json','xml','ajax']);
    $routes->fallbacks('DashedRoute');
});

Router::scope('/', function (RouteBuilder $routes) {
    $routes->extensions(['json', 'xml', 'ajax']);
$routes->connect('/', ['controller' => 'Login', 'action' => 'login']);
    $routes->connect('/admin', ['controller' => 'Login', 'action' => 'index', 'prefix' => 'admin']);
    $routes->fallbacks(DashedRoute::class);
});
Plugin::routes();

hogeController.php

public function invoice(){
        $this->viewClass = 'CakePdf.Pdf';

       ~以下~
      いろいろ処理
}

calendar.ctp

var form = document.createElement("form");
        form.action = '/admin/order/invoice/<?= $day ?>.pdf';
    form.method = 'post';
        form.target = '_blank';

composer.json

{
    "name": "cakephp/app",
    "description": "CakePHP skeleton app",
    "homepage": "http://cakephp.org",
    "type": "project",
    "license": "MIT",
    "require": {
        "friendsofcake/CakePdf": "^3.5"
    },
    "require-dev": {
        "psy/psysh": "@stable",
        "cakephp/debug_kit": "~3.2",
        "cakephp/bake": "~1.1"
    },
    "suggest": {
        "markstory/asset_compress": "An asset compression plugin which provides file concatenation and a flexible filter system for preprocessing and minification.",
        "phpunit/phpunit": "Allows automated tests to be run without system-wide install.",
        "cakephp/cakephp-codesniffer": "Allows to check the code against the coding standards used in CakePHP."
    },
    "autoload": {
        "psr-4": {
            "App\\": "src"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Test\\": "tests",
            "Cake\\Test\\": "./vendor/cakephp/cakephp/tests"
        }
    },
    "scripts": {
        "post-install-cmd": "App\\Console\\Installer::postInstall",
        "post-create-project-cmd": "App\\Console\\Installer::postInstall",
        "post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump",
        "check": [
            "@test",
            "@cs-check"
        ],
        "cs-check": "phpcs --colors -p --standard=vendor/cakephp/cakephp-codesniffer/CakePHP ./src ./tests",
        "cs-fix": "phpcbf --colors --standard=vendor/cakephp/cakephp-codesniffer/CakePHP ./src ./tests",
        "test": "phpunit --colors=always"
    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • aaayii

    2018/08/31 14:22

    ご回答ありがとうございます。質問文の方に追記させていただきました。再度ご教授いただけますでしょうか

    キャンセル

  • asahina1979

    2018/08/31 16:22

    インストールの提案(suggests)が表示されてますが・・・ どれかを入れろと

    キャンセル

  • aaayii

    2018/08/31 16:46

    ほかは変えずに、friendsofcake/cakepdfだけをインストールしたい場合は、composer.jsonには"require"の部分だけ残して他は消したほうが良いですか?そもそもsuggestなどはもともとかいてありました。その後composer updateの方法がよろしいでしょうか。

    キャンセル

回答 1

checkベストアンサー

0

ControllerにRequestHandlerは読み込んでいますか?

public function initialize()
{
      parent::initialize();
      $this->loadComponent('RequestHandler');
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/04 19:10

    お返事遅くなり大変申し訳ございません。
    ご回答ありがとうございました。

    実際プロジェクトとしては、そもそもPDF化がなくなりました。
    ただ先ほど、おっしゃっていただいた通り、試しましたところ成功しました!
    感謝いたします。

    キャンセル

同じタグがついた質問を見る

  • CakePHP

    2518questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。