Представьте себе этот сценарий, у меня есть таблица с именем message_templates со следующей структурой:
id
subject
body
где тело значение:
<p>ID: ${PROJECT_ID} </p>
<p>Project's Title: ${PROJECT_TITLE} </p>
Каков наилучший способ замены этих переменных в CakePHP — я знаю это, CakeEmail имеет параметр конфигурации, называемый «шаблон», но это не так, потому что мой шаблон (колонна тела) приходит из базы данных. Может быть, использовать preg_replace
или же sprintf
перед отправкой?
Кто-нибудь может мне помочь?
Вам просто нужно использовать str_replace
и предоставить массив токенов и массив замен:
$body = str_replace(
[
'${PROJECT_ID}',
'${PROJECT_TITLE}'
],
[
'1',
'Foo bar'
],
$data['MessageTemplate']['body']
);
Затем вы можете пройти $body
в CakeEmail и отправьте письмо как обычно.
Других решений пока нет …