#php #database #templates #codeigniter
#php #База данных #шаблоны #codeigniter
Вопрос:
У меня есть шаблон почты на разных языках, и внутри этих шаблонов используются некоторые переменные php. Я должен хранить шаблоны в БД и перед отправкой письма получать шаблон для текущего языка и заменять все переменные php. Пока я делал это с помощью views — проблем не было, но теперь я не знаю, как заменить переменные php в шаблоне? Или, может быть, есть лучший способ решить эту проблему? Мне просто нужно иметь возможность редактировать шаблоны со стороны администратора.
Ответ №1:
Почему бы вам не сохранить переменные в шаблоне электронной почты как что-то не PHP, например.
Thank you %name% for registering!
Это упрощает редактирование администратором.
Затем в вашем коде перед отправкой у вас есть массив всех переменных для замены…
$template = $this->load->view('email_template.html', '', true);
foreach ($vars as $key => $value) {
$template = str_replace('%' . $key . '%', $value, $template);
}
Редактировать
В ответ на ваш комментарий ниже я бы настроил языки в массиве, а затем использовал PHP в представлении для вывода правильного языка, а затем выполнил замену…
// List of message translations
$messages = array(
'en' => array(
'thank_you' => 'Thank you %name% for registering!',
'username_details' => 'Your username is %username%'
),
'fr' => array(
'thank_you' => 'Merci %name% de l'enregistrement!',
'username_details' => 'Votre username est %username%'
)
);
// Variables to replace
$vars = array(
'name' => 'John Smith',
'username' => 'john'
);
// Choose language
$lang = 'en';
// Load the template
$template = $this->load->view('email_template.html', array('messages' => $messages, 'lang' => $lang), true);
// Replace the variables
foreach ($vars as $key => $value) {
$template = str_replace('%' . $key . '%', $value, $template);
}
email_template.html
<html>
<body>
<p><?php echo $messages[$lang]['thank_you']; ?></p>
<hr />
<p><?php echo $messages[$lang]['username_details']; ?></p>
</body>
</html>
Комментарии:
1. что касается
Thank you %name% for registering!
текста на английском языке, мне нужны разные шаблоны для разных языков. Таким образом, не было бы только только файлаemail_template.html