使用twig访问redbeanphp对象属性

时间:2012-10-05 11:39:01

标签: php twig fuelphp redbean

这可能是一个简单的问题,但却让我感到头疼。

问题是我正在用fuelPHP,RedBean和Twig做一个项目。一切似乎都很好,我在这个框架上的进展非常好。

我遇到的问题我还没有找到任何解决方案,如果我从redbean获取对象,那么Twig无法访问 {{object.property}} 。这很奇怪,因为如果我使用自己的MVC框架,完全相同的代码(Twig + Redbean也可以):S

例如

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"}

2 个答案:

答案 0 :(得分:3)

我为你调查了Twig,但这太复杂(不必要)潜入。 我不知道Twig。但是你试过使用RedBeanPHP作者编写的模板引擎吗?

http://gabordemooij.com/se/

这很简单。但与RedBeanPHP不同。 Gabor总是与众不同;)。

答案 1 :(得分:3)

最后我开始工作了。

问题出在FuelPHP框架中的Twig配置中。

auto_encode参数在对象属性的情况下执行json到数组的转换。所以你必须将它设置为false(默认情况下是这样)。

调整您的配置以获得类似的内容。

// TWIG ( http://www.twig-project.org/documentation )
// ------------------------------------------------------------------------
'View_Twig' => array(
    'include' => APPPATH.'vendor'.DS.'Twig'.DS.'Autoloader.php',
    'auto_encode' => false, // Remember to set this to false
    'views_paths' => array(APPPATH.'views'),
    'delimiters' => array(
        'tag_block'     => array('left' => '{%', 'right' => '%}'),
        'tag_comment'   => array('left' => '{#', 'right' => '#}'),
        'tag_variable'  => array('left' => '{{', 'right' => '}}'),
    ),
    'environment' => array(
        'debug'                => false,
        'charset'              => 'utf-8',
        'base_template_class'  => 'Twig_Template',
        'cache'                => APPPATH.'cache'.DS.'twig'.DS,
        'auto_reload'          => true,
        'strict_variables'     => false,
        'autoescape'           => false,
        'optimizations'        => -1,
    ),
    'extensions' => array(
        'Twig_Fuel_Extension'
    ),
),

它会像魅力一样工作:)