Twig - 通过Twitter API发送推文文本

时间:2015-04-10 01:42:48

标签: php twitter twig twitter-oauth

我正在使用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 %}

所以我认为我可以做同样的事情,但这对我不起作用。我错过了什么?

1 个答案:

答案 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获得的回复。

在我的原始代码中没有任何内容可循环播放,因为我没有足够深入到达有关各个推文的信息,我基本上是在尝试遍历父级。