1

テンプレートを介して出力したいタイムラインを取得するために、twitter API を使用しています。私は次のようにフィードを取得しています:

public static function getTwitterFeed(){
    $settings = array(
        'oauth_access_token' => "xxx",
        'oauth_access_token_secret' => "xxx",
        'consumer_key' => "xxx",
        'consumer_secret' => "xxx"
    );

    $url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
    $getfield = '?screen_name=xxx&count=5';
    $requestMethod = 'GET';
    $twitter = new TwitterAPIExchange($settings);
    $returnTwitter = $twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest();
    return json_decode($returnTwitter);

}

これはオブジェクトの配列を返します (つぶやきがオブジェクトです)。次のように、テンプレートでそれをループできるようにしたいと考えています。

<% loop TwitterFeed %>
    <h4>$created_at</h4>
    <p>$text</p>
<% end_loop %>

上記のように、ループは 1 回入力されますが、値は認識されません。どうすればこれを達成できますか?

4

2 に答える 2

4

DataObjectsSilverStripe では、データベースからのレコードを表します。あなたのケースでは、ArrayData. 代わりにまたはを
使用してください。使用方法については、 https://stackoverflow.com/a/17922260/1119263を 参照してください。$array = Convert::json2array($returnTwitter)$array = json_decode($returnTwitter, true)
ArrayData

于 2013-11-10T10:52:51.307 に答える
1

正しい方向に向けてくれた Zauberfisch に感謝します。私はそれを次のように解決しました:

public static function getTwitterFeed(){
    $settings = array(
        'oauth_access_token' => "xxx",
        'oauth_access_token_secret' => "xxx",
        'consumer_key' => "xxx",
        'consumer_secret' => "xxx"
    );

    $url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
    $getfield = '?screen_name=xxx&count=5';
    $requestMethod = 'GET';
    $twitter = new TwitterAPIExchange($settings);
    $returnTwitter = $twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest();

    $returnTwitter = Convert::json2array($returnTwitter);

            $tweets = array();
            foreach ($returnTwitter as $key => $value) {
                $tweets[] = new ArrayData(array('created_at' => $value['created_at'], 'text' => $value['text']));


            }
                return new ArrayList($tweets);

    }
于 2013-11-10T12:11:41.150 に答える