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

问题描述:

我正在使用handlebars和一个handlebars注册助手循环通过一个数组,我放在我的上下文中并显示为ul。其中一个li项目需要有一些php。我无法弄清楚将php放入li中的方法。如何将PHP行添加到Handlebars上下文数组中?

这是我现在有:

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

你不能弄清楚,因为你不完全了解PHP和把手的工作。默认情况下,您的<?php ?>标签只能在PHP扩展名的文件中使用。我的猜测是你的把手模板有.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}); 
     } 
    });