我正在使用Abraham's TwitterOAuth library和Twig构建一个用户授权的迷你应用程序,然后根据他们的输入搜索推文。
我可以成功地将API的返回转储到我的页面,但当我尝试将每条推文的推文文本分开时,我没有运气。
以下是我的dashboard.php文件的相关代码:
$user = $connection->get("account/verify_credentials");
if(isset($_POST['query'])) {
$query = $_POST['query'];
$statuses = $connection->get("search/tweets", array("q" => "$query"));
echo $twig->render("dashboard.html", array("access_token" => $access_token, "user" => $user, "statuses" => $statuses));
} else {
echo $twig->render("dashboard.html", array("access_token" => $access_token, "user" => $user));
}
然后在我的twig模板中问题代码:
{% if statuses %}
<ul>
{% for status in statuses %}
<li>{{ statuses.text|e }}</li>
{% endfor %}
</ul>
{{ dump(statuses) }}
{% endif %}
{{dump(statuses)}}有效,但UL内部没有任何内容。我对这一切都很陌生,所以我一直在看亚伯拉罕的示例代码here,他这样做:
{% if user.status %}
{{ user.status.text }}
{% else %}
{{ user.description }}
{% endif %}
所以我认为我可以做同样的事情,但这对我不起作用。我错过了什么?
答案 0 :(得分:1)
我通过比较GET account/verify_credentials(亚伯拉罕的用户代码中发出的请求)和GET search/tweets的示例回复来解决这个问题。
如果您比较回复的开头,您会注意到有一个额外的级别可以遍历搜索/推文响应。
所以不要这样做:
{% for status in statuses %}
<li>{{ statuses.text|e }}</li>
{% endfor %}
我做了:
{% for status in statuses.statuses %}
<li>{{ statuses.text|e }}</li>
{% endfor %}
我意识到命名并不是很好,但是为了像我这样的任何其他新手来打破它:第一个&#34;状态&#34;是我发给twig的变量,第二个&#34;状态&#34;来自我从API获得的回复。
在我的原始代码中没有任何内容可循环播放,因为我没有足够深入到达有关各个推文的信息,我基本上是在尝试遍历父级。