如何在Volt模板中向JavaScript传递数组?
在Phalcon的Volt模板中向JavaScript传递数组的方法
直接在Volt模板中使用PHP的json_encode函数,并配合raw过滤器即可解决问题,具体写法如下:
方法一:模板内直接转换
<script type="text/javascript"> var usersList = {{ json_encode(array_from_volt) | raw }}; </script>
为什么原来的写法不生效?
直接输出{{ array_from_volt }}时,Volt会将PHP数组转为普通字符串(比如显示为Array或数组的字符串形式),这种格式无法被JavaScript识别。而json_encode会把PHP数组转换为符合JS语法的JSON格式字符串,再通过raw过滤器避免Volt自动转义HTML实体(比如将双引号转成"),确保JSON代码能被JS正确解析。
方法二:控制器提前转换
也可以在控制器中先把数组转为JSON字符串,再传递给模板:
控制器代码:
$this->view->usersJson = json_encode($your_php_array);
模板代码:
<script type="text/javascript"> var usersList = {{ usersJson | raw }}; </script>
两种方式都能实现需求,可根据实际场景选择。
内容的提问来源于stack exchange,提问作者morteza mortezaie
相关产品推荐
相关产品推荐

