【问题标题】:Twig template engine not reading object propertiesTwig 模板引擎不读取对象属性
【发布时间】:2012-12-21 22:25:42
【问题描述】:

Twig 允许您将数组或对象传递给模板,并为您提供相同的接口来访问两种数据结构的成员。 所以,例如:

$test = array('foo' => 'foo', 'bar' => 'bar');

将让您以test.footest.bar 的身份在模板中访问它

现在这个对象的实例将具有相同的效果。太棒了:)

class test
{
    public $foo;
    public $bar;
}

使用魔术 __set 和 __get 方法的对象怎么样?

class test
{
    public $properties;

    public function __set($name, $value)
    {
        $this->properties[$name] = $value;
    }

    public function __get($name)
    {
        return $this->properties[$name];
    }
}

很遗憾,在这种情况下,您无法访问该对象的属性。 我不确定 Twig 是这里的问题还是 PHP 本身的问题。

【问题讨论】:

    标签: php overloading twig


    【解决方案1】:

    你还需要实现__isset(),例如

    public function __isset($name) {
        return array_key_exists($name, $this->properties);
    }
    

    http://twig.sensiolabs.org/doc/recipes.html#using-dynamic-object-properties

    【讨论】:

    • 啊,谢谢!我是新手,必须有一些简单的解决方案。
    • Phil 你知道如何获得可迭代对象的大小吗? obj|length 似乎不起作用。
    • @marcin_koss 你最好打开另一个问题,但我猜,我会先尝试实现Countable
    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多