9

HTMLメールを生成するカスタムクラスを作成したいと思います。電子メールの内容を「電子メールビュースクリプト」ディレクトリから取得したい。したがって、通常のビュースクリプト(クラス変数などを指定できる)を作成するのと同じ方法でHTMLメールビュースクリプトを作成でき、ビュースクリプトはメールのHTML本文としてレンダリングされるという概念になります。

たとえば、コントローラでは次のようになります。

$email = My_Email::specialWelcomeMessage($toEmail, $firstName, $lastName);
$email->send();

関数は次のMy_Email::specialWelcomeMessage()ようになります。

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) {
    $mail = new Zend_Mail();
    $mail->setTo($toEmail);
    $mail->setFrom($this->defaultFrom);
    $mail->setTextBody($this->view->renderPartial('special-welcome-message.text.phtml', array('firstName'=>$firstName, 'lastName'=>$lastName));
}

specialWelcomeMessage()理想的には、関数を次のように簡単に動作させる方法を見つけることができれば、それが最善です。

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) {
    $this->firstName = $firstName;
    $this->lastName = $lastName;
    //the text body and HTML body would be rendered automatically by being named $functionName.text.phtml and $functionName.html.phtml just like how controller actions/views happen
}

次に、special-welcome-message.text.phtmlおよびspecial-welcome-message.html.phtmlスクリプトをレンダリングします。

<p>Thank you <?php echo $this->firstName; ?> <?php echo $this->lastName; ?>.</p>

ビュースクリプトまたはコントローラーの外部から部分ビューヘルパーを呼び出すにはどうすればよいですか?私はこれに正しい方法でアプローチしていますか?または、この問題に対するより良い解決策はありますか?

4

1 に答える 1

12

どうですか:

public static function specialWelcomeMessage($toEmail, $firstName, $lastName) {
    $view = new Zend_View;
    $view->setScriptPath('pathtoyourview');
    $view->firstName = $firstName;
    $view->lastName = $lastName;
    $content = $view->render('nameofyourview.phtml');
    $mail = new Zend_Mail();
    $mail->setTo($toEmail);
    $mail->setFrom($this->defaultFrom);
    $mail->setTextBody($content);
}

前述のようにアクション名を使用してスクリプトパスを動的に変更したい場合は、呼び出しているアクション名またはコントローラーを取得して変数として送信するか、デフォルトのパラメーターとして送信してください。これは役に立ちます:

http://framework.zend.com/manual/en/zend.controller.request.html

于 2010-07-17T12:04:47.337 に答える