2017-05-11 31 views
0

私は電子メールテンプレートにデータをプッシュするための良いシステムを作成する方法を探しています。動的電子メールテンプレートを作成する

件のデータ:

$mailDatas = array("mail title", "mail body", "mail footer"); 

、非常に

私は件のデータを持つ配列(これは、電子メール内のゾーンの数に依存件のデータの数)、および単純なHTMLメールテンプレートを持っています

<div id="mail-container"> 
    <div id="mail-header">{data}</div> 

    <img id="some design elements"> 


    <div id="mail-body">{data}</div> 

    <div id="mail-footer">{data}</div> 
</div> 

を私は必要なもの、私の配列の最初のデータで(それは文字列です)最初{data}を置き換えるです:テンプレートが見えることはどうあるべきかの簡単な例、第2の{data}$mailDatas[1]、[...]

これを行うにはどのような方法が最適ですか?私は、テンプレートを使ってメール本文を生成する関数を構築しています。

答えて

0

あなたはforeachのを実行する必要があり、その内側に、あなたはmaildatasにしてあなたは内蔵の電子メールのライブラリにCakePHPを使用することができ、この

foreach ($maildatas as $maildata) { ?> 
    <div id="mail-body"><?= $maildata; ?></div> 
<?php } ?> 
+0

いいえ、私はあなたがそれを照会した後、アレイ上で実行されますループは、データベースから返されたより私のデータ配列 –

+0

から行を持つ各データ{}置き換えるために探しています.. HTMLを作成するロジックは変更されません。ちょうど配列はデータベースから来る動的コンテンツを持っています –

1

のような変数

何かをHTMLを作成する必要があります。テンプレートを宣言し、ビューを宣言し、変数を渡すことができます。

たとえば、あなたはSRC /テンプレート/レイアウト/メール/ HTML/default.ctpに、SRC /テンプレート/メールでのごビュー/ HTML/welcome.ctpにテンプレートを入れ、次に呼び出すことができます。

$email = new Email(); 
$email 
    ->emailFormat('Html') 
    ->template('welcome','default') 
    ->to('[email protected]') 
    ->viewVars($arrayOfVariables); 
$email->send(); 

$arrayOfVariables = ['varOne' => 'some text', 'varTwo' => 'other text']; 

あなたは、このようなビューでそれを使用することができます:あなたのようなあなたの配列を宣言した場合ので

ビューVARSは、まさに「正常な」ビューのように働いている

<span><?= $varOne ?></span> 
詳細情報については

、ドキュメントを読んでください:https://book.cakephp.org/3.0/en/core-libraries/email.html

+0

それは考えですが、私の変数にはキーを使用したくない、複数の{data}しか持たない。しかし、私はpreg_replace_callbackで解決策を見つけました:) –

+0

@ThomasRbt外部入力の順序によっては、エラーが発生しやすいソリューションのように聞こえます。 – ndm

関連する問題