在把手模板中调用php函数

时间:2014-08-03 13:47:40

标签: php handlebars.js

我知道这段代码包含错误,但您能否清楚解释为什么在模板中禁止使用此类代码?

<script id="my_template" type="text/x-handlebars-template">
    <p>some HTML here</p>
    <?=php_function("{{foreign_val}}")?>
    <p>some HTML here</p>
</script>

2 个答案:

答案 0 :(得分:1)

handlebars是一个JavaScript模板引擎。 JavaScript,不包括诸如node.js之类的东西,是一种客户端脚本语言,它纯粹在&#34;客户端&#34;上执行。 (即在网络浏览器中)。

另一方面,PHP是一种服务器端脚本语言,它在&#34;服务器&#34;上执行。

实际上,他们不能互相执行。 PHP可以输出客户端在页面加载时执行的JavaScript。 JavaScript还可以调用PHP页面并读取响应。但是,两者都不能执行另一个。

在您的确切示例中,如果您提供的把手模板位于PHP可执行文件(例如说my_template.php)中,则PHP php_function()将是在将代码发送到客户端之前调用。但是,它将使用原始{{foreign_val}}占位符/标记调用,而不是您可能希望的模板替换值。

为了让您按照自己想要的方式工作,您可以让JavaScript使用您想要替换的值对服务器端脚本进行ajax调用,PHP脚本将返回php_function()的结果使用该值,然后您可以相应地填充模板。

答案 1 :(得分:0)

这不起作用,因为PHP在呈现页面时已经完成了它的工作。 把手是一种客户端技术。您要做的只是将“{{foreign_val}}”传递给您的PHP函数。