1

Twig では、適切なゲッターが存在する場合、オブジェクトからすべてのキー/値のペアを一覧表示するにはどうすればよいですか (読み取り: プライベート/保護されたプロパティ)。

class MyObject
{
    protected $foo;

    public function __construct()
    {
        $this->foo = 'bar';
    }

    public function getFoo()
    {
        return $this->foo;
    }

}

上記の例では、"foo" (キー) と "bar" (値) を取得したいと考えています。Twig は、すでに「バー」のようなことmyobject.fooや取得することを許可してくれました。myobject['foo']

以下は機能しません (配列のような構文):

{% for key, val in myobject %}
    {{ key }}={{ val }}
{% endfor %}

インターフェイスを実装Iteratorする必要がありますか、それともより良い/ネイティブな方法がありますか?

4

2 に答える 2

1

Iterator 以外のソリューションを探している場合 (個人的にはこれを使用します)、フィルターを提供する twig 拡張機能を作成できます。

http://symfony.com/doc/current/cookbook/templating/twig_extension.html

ここから、必要に応じてオブジェクトを操作できます。たとえば、to_arrayさまざまなタイプの値を受け入れ、それらを (その能力を最大限に) 配列に変換するフィルター。

PHP オブジェクトを連想配列に変換する

{% for key, val in myobject|to_array %}
    {{ key }}={{ val }}
{% endfor %}

ただし、これは単にあなたが求めた解決策を提供するだけであり、ピーターの方法は一般的により良い方法です。

于 2013-11-12T20:31:07.333 に答える