Symfony2 在 twig 中显示关联数组

问题描述 投票:0回答:1

我是 Symfony2 框架的新手,正在尝试从 lastfm API 解析一些 XML 并向用户显示信息。这将采用专辑标题、播放次数和每个项目的专辑图像的格式。

到目前为止,我可以向用户显示所有这些信息,但这并不是很有用,因为我打算向我的页面添加 CSS 样式。任何建议将不胜感激。

这是我的控制器

     /**
 * @Route("/lastfm/albums", name="albums")
 * @Template()
 */
public function albumsAction()
{

$albumsclass = new Album();

   // pull in artist albums
  $albums = simplexml_load_file('http://ws.audioscrobbler.com/2.0/?            method=artist.gettopalbums&artist=imagine+dragons&api_key=370f98844440c2ecc8e5f7        c6cea8a7a4');
$rank = $albums->xpath('/lfm/topalbums/album/@rank');

$album_name_array=array();
$album_playcount_array=array();
$album_url_array=array();
$album_image_array=array();

foreach ($rank as $ranks){

    foreach ($ranks as $rank_id) {

        $album_name = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/name');
        $album_playcount = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/playcount');
        $album_url = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/url');
        $album_image = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/image[4]');



    }
    $album_name = implode($album_name);  
    array_push($album_name_array,$album_name);

    $album_playcount = implode($album_playcount);
    array_push($album_playcount_array,$album_playcount);

    $album_url = implode($album_url);
    array_push($album_url_array,$album_url);

    $album_image = implode($album_image);
    array_push($album_image_array,$album_image);


}







$container=array();
for($i=0; $i<sizeof($album_name_array); $i++) {
                 array_push($container,$album_name_array[$i],$album_playcount_array[$i],$album_ur     l_array[$i],$album_image_array[$i]);
 }


//$hello = array('album_name'=>$album_name_array,
//           'album_playcount'=>$album_playcount_array,
//            'album_url'=>$album_url_array,
//            'album_image'=>$album_image_array,);
//array_push($album_name_array,$album_playcount_array);


return $this->render('AcmelastfmBundle:Default:albums.html.twig', array(
       // 'pageData' => array(
       //  'artistxml' => $artistxml,

        'rank' => $rank,
        'ranks' => $ranks,
        //'rank_id' => $rank_id,
        // 'ranks' => $ranks,
         'album_name' => $album_name_array,
         //'album_playcount' => $album_playcount_array[$i],
         'album_url' => $album_url_array,
         'album_image' => $album_image_array,
         'container' =>$container,
         'data' => var_export($container, true),
        //  
       //  'hello' => $hello,
        // 'james' => array('album_name' => $albumsclass->getAlbumName()),
     //    ),
        ));



}

这是我的看法

 {% extends '::lastfmbase.html.twig' %}
 {% block title %}Albums{% endblock %}

 {% block body %}


{% for key in container %}
{{key}} <br>
{% endfor %}<br>
{% endblock %}

我基本上试图将 PHP 中的代码转换为 symfony2。但是,当我收到数组到字符串转换错误时,我找不到将关联数组值传递给 twig 的方法

<?php
// pull in artist albums
$albums = simplexml_load_file('http://ws.audioscrobbler.com/2.0/?     method=artist.gettopalbums&artist=imagine+dragons&api_key=370f98844440c2ecc8e5f7 c6cea8a7a4');
$rank = $albums->xpath('/lfm/topalbums/album/@rank');

foreach ($rank as $ranks){

    foreach ($ranks as $rank_id) {
        $album_name = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/name');
        $album_playcount = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/playcount');
        $album_url = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/url');
        $album_image = $albums->xpath('/lfm/topalbums/album[@rank="'.$rank_id.'"]/image[4]');
    }



    $album_name = implode($album_name);
    $album_playcount = implode($album_playcount);
    $album_url = implode($album_url);
    $album_image = implode($album_image);

    print_r($rank_id);

    ?>
    <article class="album">
    <?php
    echo "<a href=\"".$album_url."\" target=\"_blank\">".$album_name."</a><br>";
    echo $album_playcount." listeners<br>";
    echo "<div><a href=\"".$album_url."\" target=\"_blank\"><img src=\"".$album_image."\" title=\"$album_name\" /></a></div><br>";
    ?>
    </article>
    <?php

}

php symfony twig associative-array
1个回答
1
投票

我不确定你到底在问什么。 你是这个意思吗?

{% for key, value in container %}
   {{ key }}: {{ value }}
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.