- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个模板,它总是接收一个可迭代对象,所以我可以迭代它。在循环中,每个“结果”中的对象可能具有也可能不具有显示图像所需的属性,因此我一直在尝试使用“已定义”:。例如:
{% for result in results %}
{% if result.thumbnail is defined %}
<img src='{{ result.thumbnail }}' >
{% endif %}
{% endfor %}
但是当我运行它时,我总是从 Twig 得到同样的错误:
Method 'thumbnail' is not implemented
我认为“已定义”方法会为我解决这个问题。我错过了什么?
我正在使用 Twig (1.18) 和 Silex (~1.2)。
谢谢你,拉塞尔
更新
这是当迭代器中有两个对象时 {{ dump(result) }}
的输出:
object(Turtle\Model\Attachment)[1056]
protected 'datatype' => string 'Attachments' (length=11)
protected 'filename' => string '560166.jpg' (length=10)
protected 'displayname' => null
protected 'description' => null
protected 'collection' => string 'product' (length=7)
protected 'width' => int 360
protected 'height' => int 360
protected 'file' => string '/9j/4QP+RXhpZgAASUkqAAgAAAAYAAABAwABAAAA8AAAAAEBAwABAAAAtAAAAAIBAwADAAAALgEAAAYBAwABAAAAAgAAAA4BAgAgAAAANAEAAA8BAgAFAAAAVAEAABABAgAJAAAAWQEAABIBAwABAAAAAQAAABUBAwABAAAAAwAAABoBBQABAAAAYgEAABsBBQABAAAAagEAACgBAwABAAAAAgAAADEBAgAeAAAAcgEAADIBAgAUAAAAkAEAABMCAwABAAAAAgAAAAGkAwABAAAAAAAAAAKkAwABAAAAAAAAAAOkAwABAAAAAAAAAAakAwABAAAAAAAAAAikAwABAAAAAAAAAAmkAwABAAAAAAAAAAqkAwABAAAAAAAAAKXEBwAcAAAApAEAAGmHBAABAAAAwAEAAJgDAAAIAAgACAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAFNPTlkARFNDLVAyMDAAgPwKABAnAACA/AoAECcAAEFk'... (length=34432)
protected 'mimetype' => string 'image/jpeg' (length=10)
protected 'subdir' => string 'products/acme' (length=16)
protected 'admupdated' => null
protected 'website' => string 'gaspares' (length=8)
protected 'contentids' => null
protected 'category' => null
protected 'id' => string 'pIPp0QP_TYqA0JuWmPGBmw' (length=22)
protected 'app' => null
protected 'entity' => null
protected 'item' => null
protected 'namefield' => string 'filename' (length=8)
protected 'filterfield' => null
protected 'progress' =>
array (size=0)
empty
public 'checksum' => string 'c3d3f0194b988297e603367d5fd3837b' (length=32)
object(Turtle\Model\Product)[1055]
protected 'datatype' => string 'Products' (length=8)
protected 'state' => null
protected 'manufacturer' => string '****' (length=7)
protected 'code' => string '560166' (length=6)
protected 'ghost' => boolean false
protected 'discontinued' => boolean false
protected 'title' => string '****' (length=39)
protected 'summary' => string '****' (length=43)
protected 'description' => string '****' (length=407)
protected 'information' => string '****' (length=257)
protected 'delivery' => string 'Next Working Day, On A' (length=22)
protected 'delivery_type' => string 'On A UPS Before 12.30 Service' (length=29)
protected 'tagname' => null
protected 'tag' =>
array (size=7)
0 => string 'AR4' (length=3)
1 => string 'AR3' (length=3)
2 => string 'AR2' (length=3)
3 => string 'AR5 ' (length=4)
4 => string 'AR7' (length=3)
5 => string 'AR6' (length=3)
6 => string 'AR1' (length=3)
protected 'warranty' => string '1 Year' (length=6)
protected 'catid' => null
protected 'cost' => string '74.46' (length=5)
protected 'price' => null
protected 'image' => string 'products/acme/560166.jpg' (length=27)
protected 'thumbnail' => string 'products/acme/thumb560166.jpg' (length=32)
protected 'techinfo' => string 'notechinfo.jpg' (length=14)
protected 'checksum' => string '4db345d582ac77dcd5594dc75bc2726d' (length=32)
protected 'lastmodified' => int 1424208468
protected 'admupdated' => null
protected 'id' => string 'IF8B94PuRieIsHWARfI51w' (length=22)
protected 'app' => null
protected 'entity' => null
protected 'item' => null
protected 'namefield' => string 'code' (length=4)
protected 'filterfield' => null
protected 'progress' =>
array (size=0)
empty
可以看出,第一个对象没有“缩略图”,但第二个对象有。 Twig 在第一个上爆炸了。
更新 2
为了提供更完整的图片,我现在运行的代码具有更新的语法,如@prisoner 所建议的:
{% for result in results %}
<div class='row'>
<div class='col-md-1 col-md-offset-1'>
{% if result.thumbnail is defined and result.thumbnail is not empty %}
<a href="{{ app.url_generator.generate('product_show', {'id': result.id}) }}">
<img src='/images/{{ result.thumbnail }}' align='left' height='75'>
</a>
{% endif %}
</div>
</div>
{% endfor %}
不幸的是,这并没有解决问题,我得到了和以前一样的错误。这次是完整的:
Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("Method 'thumbnail' not implemented") in "search_results" at line 4. (uncaught exception) at /usr/local/turtle/lib/vendor/twig/twig/lib/Twig/Template.php line 304 {"exception":"[object] (Twig_Error_Runtime: An exception has been thrown during the rendering of a template (\"Method 'thumbnail' not implemented\") in \"search_results\" at line 4. at /usr/local/turtle/lib/vendor/twig/twig/lib/Twig/Template.php:304
我原以为'defined'会检查属性是否存在,可能使用property_exists之类的,这样在检查时就不会抛出错误。
更新 3
我向两位评论者@prisoner 和@Alan Tiemblo 道歉,我确实有神奇的 setter 方法。我忘记了在迭代器中设置的两个类都扩展了一个“模型”类,其中包含 __get 和 __set 方法。
这会影响我所看到的吗?是否出于某种原因,Twig 无法使用父类?
最佳答案
为了处理这种情况,我习惯使用 default过滤器:
{% if result.thumbnail|default('') != '' %}
{# ... #}
{% endif %}
编辑:
Twig 的属性访问器看不到魔法 getter(参见 \Twig_Template::getAttribute
方法)。
相反,随便调用你的 magic getter:
{% if result.__get('thumbnail')|default('') != '' %}
{# ... #}
{% endif %}
关于php - Twig "is defined"是否适用于可迭代对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579751/
如果您有超过 1 个具有相同类名的(动态)文本框,并使用 jquery 循环遍历每个所述文本框,您是否可以假设每次选择文本框的顺序都是相同的? 示例: 文本框 1 值 = 1文本框 2 值 = 2文本
有人知道为什么这段代码无法顺利运行吗?它似乎不喜欢使用yield关键字进行迭代:我正在尝试从任何级别的列表或字典中挖掘所有数字(对列表特别感兴趣)。在第二次迭代中,它找到 [2,3] 但无法依次打印
我关于从 mysql 数据库导出数据并将其保存到 Excel 文件(多表)的创建脚本。我需要让细胞动态基因化。该脚本正确地显示了标题,但数据集为空。当我“回显”$value 变量时,我检查了数据是否存
我正在尝试在 Python 中运行模拟,由此我绘制了一个数组的随机游走图,给定了两个变量参数的设定水平。 但是,我遇到了一个问题,我不确定如何迭代以便生成 250 个不同的随机数以插入公式。例如我已经
我是学习 jquery 的新手,所以如果这是一个相对简单的问题,我深表歉意。我有一个 ID 为 ChartstoDisplay 的 asp.net 复选框列表。我正在尝试创建 jquery 来根据是否
我正在尝试根据在任意数量的部分中所做的选择找出生成有效案例列表的最佳方法。也许它不是真正的算法,而只是关于如何有效迭代的建议,但对我来说这似乎是一个算法问题。如果我错了,请纠正我。实现实际上是在 Ja
如果我使用 sr1 为 www.google.com 发送 DNSQR,我会收到几个 DNSRR(s) 作为回复,例如(使用 ans[DNSRR].show() 完成): ###[ DNS Resou
假设有这样一个实体类 @Entity public class User { ... public Collection followers; ... } 假设用户有成千上万的用户关注者。我想分页..
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Nested jQuery.each() - continue/break 这是我的代码: var steps =
我刚从 F# 开始,我想遍历字典,获取键和值。 所以在 C# 中,我会说: IDictionary resultSet = test.GetResults; foreach (DictionaryEn
我知道已经有很多关于如何迭代 ifstream 的答案,但没有一个真正帮助我找到解决方案。 我的问题是:我有一个包含多行数据的txt文件。 txt 文件的第一行告诉我其余数据是如何组成的。例如这是我的
我有 12 个情态动词。我想将每个模态的 .modal__content 高度与 viewport 高度 进行比较,并且如果特定模态 .modal__content 高度 vh addClass("c
在此JSFiddle (问题代码被注释掉)第一次单击空单元格会在隐藏输入中设置一个值,并将单元格的背景颜色设置为绿色。单击第二个空表格单元格会设置另一个隐藏输入的值,并将第二个单元格的背景颜色更改为红
这是一个非常具体的问题,我似乎找不到任何特别有帮助的内容。我有一个单链表(不是一个实现的链表,这是我能找到的全部),其中节点存储一个 Student 对象。每个 Student 对象都有变量,尽管我在
有没有办法迭代 IHTMLElementCollection? 比如 var e : IHTMLLinkElement; elementCollection:IHTMLElementCollect
我正在尝试用 Java 取得高分。基本上我想要一个 HashMap 来保存 double 值(因此索引从最高的 double 值开始,这样我更容易对高分进行排序),然后第二个值将是客户端对象,如下所示
我想在宏函数中运行 while/until 循环,并限制其最大迭代次数。我找到了如何在“通常”sas 中执行此操作: data dataset; do i=1 to 10 until(con
Iterator iterator = plugin.inreview.keySet().iterator(); while (iterator.hasNext()) { Player key
晚上好我有一个简单的问题,我警告你我是序言的新手。假设有三个相同大小的列表,每个列表仅包含 1、0 或 -1。我想验证对于所有 i,在三个列表的第 i 个元素中,只有一个非零。 此代码针对固定的 i
我在 scheme 中构建了一个递归函数,它将在某些输入上重复给定函数 f, n 次。 (define (recursive-repeated f n) (cond ((zero? n) iden
我是一名优秀的程序员,十分优秀!