2

受信者に送信する前に、電子メールの本文をデータベースに保存するアプリケーション内にメール サービスを作成しています。

各メール本文は、Zend_View を介して挿入された必要なパラメーターを持つ部分的なビュー スクリプトです。

私がやりたいのは、これらの各パーシャルをラップできる「メール」レイアウトを作成することですが、レイアウト コンテンツまたはビュー コンテンツのいずれかしか取得できないようです。一度に両方ではありません。

私が持っているもの

$scriptPath = 'test_mail';

$view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
$view->setScriptPath(APPLICATION_PATH . '/modules/mail/views/scripts/partials/');
$view->layout()->setLayout('mail');

var_dump($view->layout()->render($scriptPath));

ただし、受け取るのはビュー スクリプトのコンテンツだけです。

私のレイアウトは次のようになります。

<table class="mail">
    <!-- Snip -->
    <?php echo $this->layout()->content; ?>
    <!-- Snip -->
</table>

私はこれが可能であることを知っています。私はしたくない:

$layout->content = $view->render($scriptPath);

私はこれについて間違った方向に進んでいると思います。レイアウトコントローラープラグインを登録する必要がある/登録していないので、何らかの形でこれをトリガーして出力を取得する必要がありますか?

カスタム レイアウト クラスを作成して自分でレンダリングを処理することもできると思いますが、他の人が最初に言ったことを見たいと思っていました。

任意のヒント?ありがとう!

4

2 に答える 2

0

メール テンプレートで %mail_body% パターンを使用しています。

$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
$mail_template = $view->render('template.phtml');
$returnYourReadyTemplate = str_replace('%mail_body%', $mail_body, $mail_template);

template.phtml で:

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body >
<div style="margin:30px 20px 10px 20px">
%mail_body%
</div>
</body>
</html>

これがお役に立てば幸いです!

于 2013-05-08T14:37:07.773 に答える