我目前正在使用Twig模板库构建一个应用程序。
在我的PDO声明中,我收到以下数组:
Array
(
[0] => Array
(
[id] => 1
[artist] => Dena
[track] => Cash, Diamond Ring, Swimming Pools
[link] => http://www.youtube.com/watch?v=r4CDc9yCAqE
)
[1] => Array
(
[id] => 2
[artist] => Jessy Lanza
[track] => Kathy Lee
[link] => http://vimeo.com/73455369
)
[2] => Array
(
[id] => 3
[artist] => The Orwells
[track] => In my Bed (live)
[link] => http://www.youtube.com/watch?v=8tA_2qCGnmE
)
)
但当我将数组传递给Twig渲染并尝试在我的模板中输出时,如:
<ul>
{% for song in songs %}
<li>{{ song.artist }}</li>
{% endfor %}
</ul>
什么都没发生,我知道这是因为数组有一个顶级父级,我不知道如何删除它。我现在已经尝试了几种不同的方法。你知道怎么解决这个问题吗?仅供参考,我将PDO作为关联数组返回,因为Twig似乎不接受对象。像这样:
$options = array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING); // Options for PDO
我甚至在Twig语法中尝试了一些key=>值,但没有成功。像这样:
{% for key in array|keys %}
...
{% endfor %}
以下是我从数据库获取数据的代码:
/**
* Get all songs from database
*/
public function getAllSongs()
{
$sql = "SELECT id, artist, track, link FROM song";
$query = $this->db->prepare($sql);
$query->execute();
return $query->fetchAll();
}
我修复了它,我必须给我的数组一个名称,这样它才能识别它
$this->loadView('home/index', $songs);
对此:
$this->loadView('home/index', array('songs' => $songs));
然后我可以通过以下方式打印数据:
<ul>
{% for song in songs %}
<li>{{ song.artist }}</li>
{% endfor %}
</ul>