【问题标题】:Access redbeanphp object property with twig使用 twig 访问 redbeanphp 对象属性
【发布时间】: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 =&gt; string '{&amp;quot;id&amp;quot;:&amp;quot;13&amp;quot;,&amp;quot;text&amp;quot;:&amp;quot;adsadsads&amp;quot;,&amp;quot;room&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;datetime&amp;quot;:&amp;quot;2012-10-05 14:29:08&amp;quot;,&amp;quot;user_id&amp;quot;:&amp;quot;1&amp;quot;}' (length=188)

标签: php twig fuelphp redbean


【解决方案1】:

我为您研究了 Twig,但它太复杂(没必要),无法深入研究。 我不知道Twig。但是你试过用RedBeanPHP作者写的模板引擎吗?

http://gabordemooij.com/se/

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

【讨论】:

  • 嗨 Gabor(我真的很喜欢你的 ORM 简单快速准确)我保证试试 Stamp。但在这种情况下,我真的需要 Twig 的强大功能来简化很多事情。
【解决方案2】:

终于搞定了。

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

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

调整您的配置以获得类似的效果。

// 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'
    ),
),

它会像魅力一样发挥作用:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多