我知道这段代码包含错误,但您能否清楚解释为什么在模板中禁止使用此类代码?
<script id="my_template" type="text/x-handlebars-template">
<p>some HTML here</p>
<?=php_function("{{foreign_val}}")?>
<p>some HTML here</p>
</script>
答案 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函数。