0

単一のレコードに viewVars を設定して、正常にメール送信できます。複数のレコードを含む電子メールを送信しようとすると、問題が発生します。正しいレコードを見つけて、それらをメール機能に渡すことができました。問題は、メールテンプレートに渡された配列をデバッグすると、

Notice (8): Undefined variable: vars [APP\View\Emails\html\latest_projects.ctp, line 1]

ただし、エラーのすぐ下に、必要な情報が表示されます。

(int) 0 => array(
    'Project' => array(
        'id' => '809',
        'created' => '2014-04-23',
        'project_number' => 'SPN00000809',
    )
),
(int) 1 => array(
    'Project' => array(
        'id' => '810',
        'created' => '2014-04-23',
        'project_number' => 'SPN00000810',
    )
)

*簡潔にするために一部のフィールドを省略しています。

電子メール テンプレートでこの配列をループするにはどうすればよいですか? ビューで行うように、標準の foreach ループを試しましたが、未定義の変数が foreach の問題で提供されます。アドバイスや提案はありますか?

4

3 に答える 3

0

ドキュメントで述べたように:-

$Email->viewVars(array('value' => 12345));

メール テンプレートの $value として使用できます。

配列を「値」に設定するのと同じように、$value を配列として使用できます。

于 2014-04-23T10:32:03.840 に答える
0

問題は、渡された配列、cake によって生成された $dataForView が組み合わせ (?) 配列だったことです。 (整数)0 => 配列(); 受け取った配列は次のように見えました。

array(
  content => '',
  (int) 0 => array(
    Project => array(
      fieldName1 => value,
      fieldName2 => value
    )
  ),
  (int) 1 => array(
    Project => array(
      fieldName1 => value,
      fieldName2 => value
    )
  )
)

連想キー (コンテンツ) を設定解除すると、通常どおり正規化された配列をループできることがわかりました。最善の方法ではないかもしれませんが、うまくいきます。

//remove associative key
unset($dataForView['content']);

//loop through array and output values
foreach($dataForView as $key=>$val):
echo $val['Project']['id']; //echo other info as well
endforeach;
debug($dataForView); 

助けてくれてありがとう。

于 2014-04-24T00:28:55.400 に答える