Я использую handlebars и помощник регистрации handlebars, чтобы перебрать массив, который я поместил в свой контекст и отобразил как ul. Один из элементов li должен иметь несколько php. Я не могу найти способ поместить php в li.
Вот что у меня сейчас:
var context = {
social: [
{ url: "[redacted]"},
{ url: "[redacted]"},
{ url: "[redacted]"},
{ url: "<?php echo get_favorite_toggle('{{post_id}}'); ?>"}
]
}
Вы не можете понять это, потому что вы не до конца понимаете, как работают PHP и Handlebars. По умолчанию ваш <?php ?>
теги будут работать только в файлах с расширением PHP. И я думаю, что ваши шаблоны Handlebars имеет .handlebars
расширение.
Итак, один наивный способ — переименовать этот шаблон в .php
, Но это может сломать другие интеграции.
Надлежащим способом является запрос вашего PHP-файла с использованием AJAX и рендеринг на основе ответа.
Создать новый файл, favorite.php
Например, и поставить этот код:
<?php
// Your imports here
$post_id = $_GET['post_id'];
echo get_favorite_toggle($post_id);
?>
Теперь ваш файл JS может выглядеть так:
var context = {
social: [
{ url: "[redacted]"},
{ url: "[redacted]"},
{ url: "[redacted]"}
]
};
jqueryNoConflict.ajax({
url: "/favorites.php?post_id="+post_id,
success: function (data) {
context.push({ url: data});
}
});
Других решений пока нет …