CakePHP DebugKit 新機能2つ/composerパッケージ表示とメールプレビューを使ってみる

CakePHP DebugKit 新機能2つ/composerパッケージ表示とメールプレビューを使ってみる

Cakeアプリ開発にかかせないDebugKitに最近興味深い機能が2つ追加されたので紹介します。 試したい場合は 以下のように composer update して DebugKit のバージョンを3.8にアップグレードしてください。

$ composer update cakephp/debug_kit

composer パッケージ一覧表示 & 更新チェック機能 (DebugKit 3.7.0 で追加)

20170208tanaka-packages.png

1つ目はcomposerパッケージを表示し、更新があるかチェックする機能です。 composer.lock を読み込んで、パッケージバージョン一覧を表示します。 左上の「Check for Update」をクリックすると composer outdated を実行して更新があるかチェックできます。(何分か時間がかかる恐れがあります)

メールプレビュー機能 (DebugKit 3.8.0 で追加)

2017/1/31 にリリースされた3.8.0 では、Mailerクラスで送信するメールがレンダリングされた結果をDebugKitツールバーでチェックできるようになりました。 以下のツイートで動作の様子がわかります。

では、実際に試してみます。composer create-project で作成したCakeアプリの中にカスタムのMailerクラスと、テンプレートファイルを作成しましょう

src/Mailer/UserMailer.php

<?php
namespace App\Mailer;

use Cake\Mailer\Mailer;

class UserMailer extends Mailer
{
    public function welcome($user)
    {
        return $this->to($user['email'])
            ->subject(sprintf("Welcome %s", $user['name']))
            ->template("welcome_mail")
            ->layout("default")
            ->set(["user" => $user]);
    }
}

src/Template/Email/text/welcome_mail.ctp

<?= $user['name'] ?>さん
このサイトに会員登録してくれてありがとうございます。

次のリンクをクリックして登録を完了してください

http://example.com/register?token=<?= $activationToken ?>

これらのコードは再利用可能なメールの作成の方法にしたがっています。

Mailerクラスとテンプレートから生成されるメールをプレビューするためのクラスを作ります。

src/Mailer/Preview/UserMailPreview.php

<?php
namespace App\Mailer\Preview;

use DebugKit\Mailer\MailPreview;

class UserMailPreview extends MailPreview
{
    public function welcome()
    {
        $user = [
            'name' => 'PPAP',
            'email' => 'yourname@example.com',
        ];
        return $this->getMailer("User")
            ->welcome($user)
            ->set(["activationToken" => "dummy-token"]);
    }
}

Mailer Previewsパネルに表示されるサンプルコードはUserエンティティを使ってますが、上記サンプルでは試しやすいように $user 配列にしています。 上記の3つのファイルを設置後にMailパネルを表示してください

DebugKitツールバーからレンダリング結果を確認する

Mailタブをクリックすると上記のように表示されます。

20170208tanaka-mail-panel.png

「Email previews page」をクリック

20170208tanaka-mail-panel02.png

welcomeをクリック

20170208tanaka-mail-panel03.png

このページがメールのプレビューになります。メールヘッダーとレンダリング後の本文が表示されていることがわかります。

まとめると、プレビューするまでの流れは

  • 再利用可能なメールの作成に従ってカスタムMailerクラスとテンプレートを定義する
  • カスタムMailPreviewクラスを定義し、内部でダミーデータを流し込む
  • DebugKitツールバーからMail Preview機能にアクセスする

となります。

送信したメールをあとで確認する

送信したメールを後で確認することもできます。 コントローラで、ユーザー仮登録後にメールを送るとして、以下のようなコードを書き、送信処理を実行すると

<?php
namespace App\Controller;

use App\Mailer\UserMailer;

class UserRegisterController extends AppController
{
    public function register()
    {
        // ... (略)

        // 訪問者から 'name' と 'email' をフォーム送信してもらったと仮定
        $user = [
            'name' => 'PPAP',
            'email' => 'yourname@example.com',
        ];
        $userMailer = new UserMailer();
        $userMailer->set(["activationToken" => "dummy-token"])
            ->send('welcome', [$user]);
    }
}

以下のようにDebugKitツールバーに表示されます

20170208tanaka-mail-panel04.png

これらの機能を使えば、メール文面の体裁を整える作業はDebugKitを使って、 最終的な体裁確認だけ実際のメーラーを使うようにすれば良くなりそうです。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ