E-posta şablonları XML saklanır.

0 Cevap php

Böyle bir e-posta xml dosyası var:

<?xml version='1.0' standalone='yes'?>
<emails>
 <email id="contract-expired">
    <description>We send this email when we want to inform a user that a contract is coming up to it's expiration date</description>
    <subject>Example: Contract Expiration</subject>
    <parameters>
        <param>name</param>
        <param>number_of_contracts</param>
    </parameters>
    <content>
        <html>
            <![CDATA[
            Dear %name%, <br />
            <p>
            <?php
                       foreach($contract as $value):
                         echo $value->getTitle()
                       endforeach;
                    ?>
            You have %number_of_contracts% contracts that are due to expire in under 30 days. Please log in to example.com to review the contracts.
            <br /><br />
            This is an automated email. Please do not reply.
            </p>
            ]]>
        </html>
        <plain>
            Dear %name%, You have %number_of_contracts% contracts that are due to expired in under 30 days. Please log in to example.com to review the contracts. This is an automated email. Please do not reply.
        </plain>
    </content>
 </email>
</emails>

Ben e-posta şablonu işleyen bir sınıf var.

Yani Bunu gibi bir parametreyi ayarlayın:

$mail->setParameter("name", "Jamie");

Ve setContent çağırdığınızda% name% için içerik ve diğer tüm parametreleri üzerinde str_replace yapacağız. Basit yeterli.

Ve sonra ben bütün sözleşmeler, vb dışarı listelemek için şablonda bir döngü yapmak gerekiyorsa ben xml dosyasında bir php döngü yapmak zorunda yapardım, fark, ama nasıl bir nesnenin içinden geçebilir ve daha sonra içeriği yürütmek php olarak ve çıktısını alırsınız?

Herhangi bir fikir?

Teşekkürler adam!

EDIT: Sadece bir şey net olması. Ben html kurmak istiyoruz ve daha sonra bir parametre olarak geçmezler. Ben Symfony kullanıyorum ve böylece ben denetleyicisi dışında html tutmak istiyorum.

Denir ediliyor budur:

  public function executeContractExpired(sfWebRequest $request)
  {
    $mail = new Mail("contract-expired");
    $mail->setParameter("name", "Joe Bloggs");
    $mail->setParameter("number_of_contracts", 567);
    $mail->setContent();

    $message = $this->getMailer()->compose();
    $message->setSubject($mail->getSubject());
    $message->setTo("example@example.com");
    $message->setFrom(array("jamie@example.com"=>"Automated Message"));
    $message->setBody($mail->getHtmlContent(), 'text/html');
    $message->addPart($mail->getPlainContent(), 'text/plain');

    $this->getMailer()->send($message);
  }

(Eylem) gibi bir şey yapıyor:

$contracts_html = "<ul>";
foreach($contracts as $contract)
{
    $contracts .= "<li>" . $contract->getTitle() . "</li>"
}
$contracts .= "</il>";

Ve sonra bir parametre olarak geçerken:

$mail->addParameter("contracts", $contracts_html);

Bu yöntem sadece çirkin.

0 Cevap