【发布时间】:2012-10-05 11:39:00
【问题描述】:
这可能是一个简单的问题,但让我头疼。
问题是我正在使用fuelPHP、RedBean 和Twig 做一个项目。一切似乎都运行良好,而且我在这个框架上的进展非常顺利。
我遇到的尚未找到任何解决方案的问题是,如果我从 redbean 获取对象,Twig 将无法访问 {{object.property}}。这很奇怪,因为如果我使用自己的 MVC 框架,完全相同的代码(Twig+Redbean 也是)可以工作。
例如
public function action_messages() {
$room = \Uri::segment(3);
$this->data['messages'] = \R::find('message', 'room = ? ORDER BY id', array($room));
// This is working because it's converting each row to array
/*foreach($this->data['messages'] as $id => $message)
$this->data['messages'][$id] = $message->export();*/
return \Response::forge(\View::forge('chat/messages.twig', $this->data));
}
如果我将导出作为数组而不是作为对象,则事情会按预期工作。
{%for message in messages%}
<b>{{message.user.id}}</b>{{message.datetime}}: {{message.text}}
{%endfor%}
我真的很迷茫。因此,我将不胜感激。
编辑:(更多信息)
如果我放
{%for message in messages%}
{{message}}<br/>
{%endfor%}
我从 Var 得到这个输出。
{"id":"23","text":"A test","room":"1","datetime":"2012-10-05 15:32:36","user_id":"1"}
【问题讨论】:
-
也许它只是我如何看待这个并且基于我如何使用树枝,但我看不到消息是如何被送到树枝来处理的。我看到了 $this->data,除非我错了,因为你给它数组并且只使用树枝循环逻辑中的键是行不通的。这里似乎缺少某些东西。
-
$this->data 是类中的公共数组。你对树枝循环逻辑到底是什么意思?我真的必须深入研究这个,因为它让我觉得自己很愚蠢或其他什么(我有 5 个项目按预期工作,其中 2 个没有使用fuelPHP)
-
我终于找到了问题(仍然没有解决)但由于某种原因,Twig 将 var 内容转储为字符串而不是对象或数组。
13 => string '{&quot;id&quot;:&quot;13&quot;,&quot;text&quot;:&quot;adsadsads&quot;,&quot;room&quot;:&quot;1&quot;,&quot;datetime&quot;:&quot;2012-10-05 14:29:08&quot;,&quot;user_id&quot;:&quot;1&quot;}' (length=188)