представление загрузки кода из базы данных - PullRequest
2 голосов
/ 25 октября 2011

У меня есть почтовый шаблон на разных языках, и внутри него используются некоторые переменные php. Я должен хранить шаблоны в БД и перед отправкой почты, получать шаблон для текущего языка и заменять все php vars. Пока я делал это с помощью представлений - проблем не было, но теперь я не знаю, как заменить php vars в шаблоне? Или, может быть, есть лучший способ решить эту проблему? Мне просто нужно иметь возможность редактировать шаблоны со стороны администратора.

1 Ответ

4 голосов
/ 25 октября 2011

Почему бы вам не сохранить переменные в шаблоне электронной почты как что-то не-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);
}

Edit

В ответ на ваш комментарий ниже я бы настроил языки в массивеи затем используйте 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...