У меня есть XML-файл электронной почты, подобный этому:
<?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>
У меня есть класс, который обрабатывает шаблон электронной почты.
Т.е. вы устанавливаете параметр следующим образом:
$mail->setParameter("name", "Jamie");
И когда вы вызываете setContent, он будет выполнять str_replace для содержимого% name% и всех других параметров.Достаточно просто.
И тогда я понял, что если мне нужно сделать цикл в шаблоне, чтобы вывести список всех контрактов и т. Д. Мне нужно сделать цикл php в файле xml, но как я могу это сделать?пройти через объект, а затем выполнить содержимое как php и получить вывод?
Есть идеи?
Спасибо, парень!
РЕДАКТИРОВАТЬ: Просто, чтобы быть ясно, что-то.Я не хочу создавать HTML, а затем передать его в качестве параметра.Я использую Symfony и, следовательно, я хочу, чтобы держать HTML из контроллера.
Вот где он вызывается:
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);
}
Делая что-то вроде (в действии):
$contracts_html = "<ul>";
foreach($contracts as $contract)
{
$contracts .= "<li>" . $contract->getTitle() . "</li>"
}
$contracts .= "</il>";
И затем передавая это как параметр:
$mail->addParameter("contracts", $contracts_html);
Этот метод просто ужасен.