Symfony2 / Twig - 错误消息:注意:尝试获取非对象的属性

时间:2013-07-23 08:29:57

标签: symfony twig

我正在尝试使用Twig在我的页面上渲染一个数组,但总是得到以下错误代码:

在渲染模板期间抛出异常(“注意:尝试在C:\ xampp \ htdocs \ JPP \ app \ cache \ dev \ classes.php第10098行中获取非对象的属性”) ProfileBundle:简介:profile.html.twig第228行。

当我查看profile.html.twig时,我看到以下for循环:

                    `{% for Educations in Education|sortByDate %}
                    <div id="education{{loop.index0}}">                               
                            <tr>
                                <td class="border">{{ Educations.fromDate|date('d-m-Y') }}</td>
                                <td>&nbsp;</td>
                                <td class="border">{{ Educations.toDate|date('d-m-Y') }}</td>
                                <td>&nbsp;</td>                                    
                                <td class="border">{{ Educations.company }}</td>
                                <td>&nbsp;</td>
                                <td class="border" id="jobsChar{{loop.index0}}">{{ Educations.jobs }}</td>
                                <td>&nbsp;</td>
                                <td class="border"><input type="button" title="Show Details" class="showDetails"  id="details_show{{loop.index0}}"/><input type="button" title="Edit" class="editJob" id="education_edit{{loop.index0}}" /><form style="display:inline" action="../deleteJob" id="deleteJob"><input type="button" title="Delete Job" class="deleteJob" id="job_delete{{loop.index0}}" /></form></td>
                            </tr></div>{% endfor %}` 

在下面你可以看到应该由TWIG的for循环处理的数组,但没有成功......

array(5){[0] =&gt; array(9){[“id”] =&gt; int(80)[“userId”] =&gt; int(3)[“company”] =&gt; string(24)“SolothurnerSpitälerAG”[“jobArea”] =&gt; int(0)[“subJobsArea”] =&gt; int(0)[“jobs”] =&gt; int(2)[“jobLabel”] =&gt; string(8)“Förster”[“fromDate”] =&gt; object(DateTime)#437(3){[“date”] =&gt; string(19)“2010-01-01 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”} [“toDate”] =&gt; object(DateTime)#436(3){[“date”] =&gt; string(19)“2011-02-09 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}} [1] =&gt; array(9){[“id”] =&gt; int(87)[“userId”] =&gt; int(3)[“company”] =&gt; string(6)“TOP IT”[“jobArea”] =&gt; int(0)[“subJobsArea”] =&gt; int(0)[“jobs”] =&gt; int(3)[“jobLabel”] =&gt; string(20)“Dipl.Pflegefachfrau”[“fromDate”] =&gt; object(DateTime)#433(3){[“date”] =&gt; string(19)“2008-05-01 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”} [“toDate”] =&gt; object(DateTime)#432(3){[“date”] =&gt; string(19)“2009-05-22 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}} [2] =&gt; array(9){[“id”] =&gt; int(103)[“userId”] =&gt; int(3)[“company”] =&gt; string(10)“Helsana AG”[“jobArea”] =&gt; int(0)[“subJobsArea”] =&gt; int(0)[“jobs”] =&gt; int(1)[“jobLabel”] =&gt; string(11)“Holffäller”[“fromDate”] =&gt; object(DateTime)#430(3){[“date”] =&gt; string(19)“2012-10-01 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”} [“toDate”] =&gt; object(DateTime)#429(3){[“date”] =&gt; string(19)“2013-05-01 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}} [3] =&gt; array(9){[“id”] =&gt; int(104)[“userId”] =&gt; int(3)[“company”] =&gt; string(8)“ALPIQ AG”[“jobArea”] =&gt; int(0)[“subJobsArea”] =&gt; int(0)[“jobs”] =&gt; int(2)[“jobLabel”] =&gt; string(8)“Förster”[“fromDate”] =&gt; object(DateTime)#427(3){[“date”] =&gt; string(19)“2013-05-01 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”} [“toDate”] =&gt; object(DateTime)#426(3){[“date”] =&gt; string(19)“2013-05-09 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}} [4] =&gt; array(9){[“id”] =&gt; int(130)[“userId”] =&gt; int(3)[“company”] =&gt; string(8)“ALPIQ AG”[“jobArea”] =&gt; int(0)[“subJobsArea”] =&gt; int(0)[“jobs”] =&gt; int(2)[“jobLabel”] =&gt; string(8)“Förster”[“fromDate”] =&gt; object(DateTime)#424(3){[“date”] =&gt; string(19)“2013-05-01 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”} [“toDate”] =&gt; object(DateTime)#439(3){[“date”] =&gt; string(19)“2013-05-09 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}}}

你能帮助我吗?非常感谢你。

干杯罗杰

3 个答案:

答案 0 :(得分:0)

默认情况下,Twig将尝试从过滤器中转义返回的数据。 Twig可能不希望返回结果是一个数组并打破它。在定义Twig过滤器时,请尝试将“is_safe”设置为true。

如果这不起作用,我怀疑你可以使用这样的过滤器。过滤器通常用于文本操作,而不是复杂的数据。你可以尝试定义一个函数而不是一个过滤器,或者在最坏的情况下处理你应该在哪里的数据=&gt;控制器。

答案 1 :(得分:0)

你的问题不在树枝上,在开头{{ dump(Educations) }}添加一行,我确定它会返回null。 问题是在控制器中,你说你转储它并且它工作,但我假设你把它倾倒在控制器中,你能不能添加动作代码或它的最后几行所以看看你是如何通过变量到模板。

答案 2 :(得分:0)

你可以尝试删除“| sortByDate”