如何在Handlebars上下文数组中添加PHP行?

时间:2016-11-04 17:00:23

标签: javascript php handlebars.js

我正在使用把手和把手寄存器助手来循环遍历我放在上下文中的数组并显示为ul。其中一个项目需要有一些PHP。我无法找到将php放入li的方法。

以下是我现在所拥有的:

var context = {
  social: [
   { url: "[redacted]"},
   { url: "[redacted]"},
   { url: "[redacted]"},
   { url: "<?php echo get_favorite_toggle('{{post_id}}'); ?>"}
]
}

1 个答案:

答案 0 :(得分:1)

你无法理解,因为你并不完全理解PHP和Handlebars的工作原理。默认情况下,<?php ?>标记仅适用于具有PHP扩展名的文件。我的猜测是你的Handlebars模板的扩展名为.handlebars 因此,一种天真的方法是将此模板重命名为.php。但这可能会破坏其他整合 正确的方法是使用AJAX要求您的PHP文件,并根据响应进行渲染。

例如,创建一个新文件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});
        }
    });