我有一个基于 symfony 2.3 的应用程序 在我的 twig 文件的 jquery 部分中,我需要访问一个 php 数组。我不确定如何实现这一目标。
我尝试了什么:
在控制器中:
public function indexAction()
{
...
$items = $em->getRepository('MyBundle:Item')->findBy(array(), array('position' => 'ASC'));
//$itemsjs = json_encode($items);
...
return $this->render('MyBundle:Default:index.html.twig', array(
...,
'items' => $items,
'itemsjs' => $itemsjs,
...,
));
}
在 TWIG 文件的开头,我有:
<script>
var cal1 = $('#cal1');
var cal2 = $('#cal2');
...
function fillCalendar(mois, annee, cal)
{
cal.css('display', 'none');
var id = $(cal).attr('id');
...
function changeMonths(step)
{
...
{% for item in items %}
fillCalendar(newMonth-12*Math.floor((newMonth)/13), newYear+Math.floor((newMonth)/13), {{ 'cal' ~ item.id }});
{% endfor %}
...
你能帮忙的话,我会很高兴 ...
编辑:关于我的应用程序的更多信息:这部分基于http://www.symfocal.com/
但我需要修改日历的显示方式。
我修改了受您的答案启发的代码
无需将 php 数组转换为 json 格式 - 它传输到 twig,因此该数组应该可用于 twig。
我
得到 2 行,但只有第一行有效(出现天数
) } 总是 cal1 - 但对于第二行,它应该成为 cal2 (数据库中有两个项目的 id 为 1 和 2)
EDIT2:我修改了代码:我替换了:
{{ 'cal' ~ item.id }}
经过 :
'cal{{ item.id }}'
经测试
alert ('cal{{ item.id }}');
在循环中 => 有效但是在函数 fillCalendar 中我会收到一个以前没有的错误:未捕获的 TypeError: Object cal1 has no method 'css'
所以当我在循环中调用时:
fillCalendar(newMonth-12*Math.floor((newMonth)/13), newYear+Math.floor((newMonth)/13), 'cal{{ item.id }}' );
我在这条指令上得到这个错误: cal.css('display', 'none'); 但是我已经定义了 cal1 和 cal2 ,所以我不明白!
EDIT3:好的,感谢这篇文章,我也解决了这个问题: Uncaught TypeError: Object #<HTMLBodyElement> has no method 'css' 但是现在没有填写日期 - 元素的 id 似乎是正确的:
...
<td class="cell_calendar"><a id="cal1_cell_5" href="#"></a></td>
...
(在原始 symfocal 上,id 填充:
<a id="cal1_cell_5" href="#" title="2013-11-01">1</a>
)
没有发生JS错误!
EDIT4:我在上面的源代码中添加了另一行:
var id = $(cal).attr('id');
我在它是 var id = cal.attr('id'); 之前更改了它 但是正如您在修改中看到的那样,我所做的这不再起作用了。只有在我看来,我无法以这种方式获取 id(稍后当我 ude id 未定义时)
我怎样才能让这个 id 使它工作?
EDIT5:原始问题已解决 - 对于最后一个 jquery 问题,我发了一个新帖子: Can't get attr id with jquery
谢谢你的帮助 !