Я использую Smarty в проекте, и я нахожу, что слишком много делаю в форматировании строк в моем шаблоне Smarty, тем самым побеждая цель использования Smarty. Это особенно касается данных из MySQL, часто требующих форматирования, таких как stripslashes
и replace
.Назначение строк MySQL Smarty
Я хотел был бы сделать этот тип форматирования на стороне PHP, а не в Шаблоне, но я не уверен, как назначить данные из MySQL в Smarty, а затем итератировать по нему. Вот РНР, что я использую, чтобы назначить строки из MySQL в Smarty:
while ($entry = $getBlogEntries->fetch()) {
$entries[] = $entry;
}
Простой массив с каждой строкой извлекается, без форматирования. Затем присваивается:
$smarty->assign('blogEntries', $entries);
И, наконец, итерацию над следующим образом:
{section name=entries loop=$blogEntries}<div class="blogEntry-middle-index">
<a class="postTitle" href="/blog/entry/{$blogEntries[entries].id}">{$blogEntries[entries].blogTitle|stripslashes}</a>
{$blogEntries[entries].blogBody|stripslashes}
</div>{/section}
То, что я пытаюсь сделать это возможность форматирования строки данных в PHP перед его назначением на Smarty а затем итерации в моем шаблоне Smarty.
Любая помощь была бы принята с благодарностью. Благодаря!
Технически, вам не нужно сначала создать '$ массив entries'. Вы можете просто создать массив '$ smarty_entries' прямо внутри цикла' fetch() 'вместо' $ entries', если у вас нет необходимости в вашем скрипте для нефильтрованного исходного вывода из вашего вызова 'fetch()'. –
Это трюк, спасибо! Легко передавать каждую запись через функцию, чтобы сделать еще больше с ней. Я не планирую использовать Smarty много, но когда я это делаю, я хотел бы сохранить это как то, что задумал разработчик. :) – NightMICU
Раньше я использовал Smarty экономно, но теперь сильно полагаюсь на него. Это довольно мощный и хорошо спроектированный IMO –