2014-10-18 1 views
0

У меня есть этот фрагмент кода (я хочу, чтобы получить элементы из XML-файла):Кусок не видит аргументы

$movies = simplexml_load_file('http://www.example.com/example.xml'); 
$out = ""; 

foreach ($movies as $movie) { 
    $properties = array(
     'photo' => $movie->image, 
     'title' => $movie->title, 
     'desc' => $movie->teaser, 
     'channel' => $movie->channel, 
     'date' => $movie->date); 

    $out .= $modx->getChunk('tpl_movies-item', $properties); 
} 

return $out; 

И кусок tpl_movies-элемент:

<article> 
    [[+photo]] 
    [[+title]] 
    [[+desc]] 
    [[+date]] 
    [[+channel]] 
    aaa 
</article> 

Это показывает только «ааа »(но когда я добавляю« echo $ properties ['photo'] «он печатает правильное значение), когда я изменяю значения в массиве на строки, например. «desc» => «lololololol» работает правильно. Не могли бы вы помочь мне, что мне делать?

ответ

2

Проблема, вероятно, в вашем заявлении foreach, так как simplexml_load_file() нуждается в ->children(), чтобы пройти через разные дочерние объекты объекта под рукой. Попробуйте:

foreach ($movies->children() as $movie) { 
    $properties = array(
     'photo' => (string)$movie->image, 
     'title' => (string)$movie->title, 
     'desc' => (string)$movie->teaser, 
     'channel' => (string)$movie->channel, 
     'date' => (string)$movie->date); 

    $out .= $modx->getChunk('tpl_movies-item', $properties); 
} 

UPDATE

Попробуйте заливке свойства, как string, как в приведенном выше примере, так как они могут быть возвращены в качестве объектов.

+0

Loop работает хорошо (я могу например echo $ properties ["date"]), но chunk не видит эти значения – RockyGrizzly

+0

Не могли бы вы попробовать 'echo json_encode ($ movie-> image);' и сообщить нам о выход? – Kypros

+0

О, ладно, я не заметил, что там тоже должно быть брошено в строку :) ty, man – RockyGrizzly