0

Twig のドット表記を使用してオブジェクトのプロパティにアクセスできません。たとえば、オブジェクト ダンプを見ると、image.copyright を実行できるはずです。これにより、最初のアイテムに「カリブ海のケイマン諸島近くの青いボタン (© Lawson Wood/Aurora Photos)」が出力されます。

私が得るエラーメッセージは

オブジェクト「SimpleXMLElement」のメソッド「copyright」が ARRaiDesignBundle:Default:wallpapers.html.twig の 12 行目に存在しません

dump(image) を使用してオブジェクトをダンプすると、各オブジェクトがダンプされます。

コントローラ クラス:

$host = 'http://www.bing.com';
$file = $host . '/HPImageArchive.aspx?format=xml&idx=0&n=10&mkt=en-US';
$xml = simplexml_load_file($file);

return $this->render('ARRaiDesignBundle:Default:wallpapers.html.twig', array('xml' => $xml, 'host' => $host));

wallpapers.html.twig ファイル:

...
{% for image in xml %}
<p><pre>{{ image.copyright }}</pre></p>
{% endfor %}
...

Twig で dump(image) を使用したオブジェクト ダンプ:

object(SimpleXMLElement)#268 (12) {
  ["startdate"]=>
  string(8) "20130330"
  ["fullstartdate"]=>
  string(12) "201303300000"
  ["enddate"]=>
  string(8) "20130331"
  ["url"]=>
  string(46) "/az/hprichbg/rb/BlueButton_EN-US1108621411.jpg"
  ["urlBase"]=>
  string(43) "/az/hprichbg/rb/BlueButton_EN-US10208337365"
  ["copyright"]=>
  string(77) "Blue button near the Cayman Islands, Caribbean (© Lawson Wood/Aurora Photos)"
  ["copyrightlink"]=>
  string(74) "http://www.bing.com/search?q=Blue+Button+%28Porpita+porpita%29&form=hpcapt"
  ["drk"]=>
  string(1) "1"
  ["top"]=>
  string(1) "1"
  ["bot"]=>
  string(1) "1"
...

誰でもこれを行う方法を提案できますか? Twig の代わりに PHP レンダリングを使用できることはわかっていますが、それは私にとっては解決策ではありません。ありがとう。

4

4 に答える 4

3

小枝のサンプルphp doc http://www.php.net/manual/fr/simplexml.examples-basic.php
で、「評価」アイテムから属性「タイプ」を取得するには、属性(="@attributes")を使用します:

{% for rating in movies.movie.rating %}
   {{ rating.attributes.type }}
{% endfor %}
于 2014-01-16T10:52:12.137 に答える
1

これは、Bing の奇妙な XML 構造が原因で発生していました。最後のビットは反復処理に適していません。標準の PHP では問題ありませんが、Twig では最後の要素のエラーをキャッチしません。

<images>
<image>...</image>
<image>...</image>
<image>...</image>
<image>...</image>
<image>...</image>
<image>...</image>
<image>...</image>
<image>...</image>
<tooltips>...</tooltips>
</images>

これを修正するために、ツールチップの設定を解除しました。"unset($xml->tooltips)"

クリーンなxmlを提供してくれた@JaredFarrishに感謝します。:)

于 2013-03-30T19:14:56.003 に答える
1

あなたにSimpleXMLElementは魔法のメソッドが実装されていないようです。Twig を呼び出すと、のメソッドがobject.property呼び出されます。Twig でプロパティに直接アクセスしてみてください:getProperty()object

{{ image['copyright'] }}
于 2013-03-30T16:00:46.313 に答える