Bonjour,
J'ai un petit problème comment je peut récupéré les dernier messages twitte de mon compte twitter avec cakephp.

j'ai déveloper une fonction qui s'appelle twitter()

/**
     * Display lasts twitter from @musicalitymaker
     * @var $twitter
     * @return the last twitter
    **/
    function twitter(){
        $twitter = curl_init();
        curl_setopt($twitter,CURLOPT_URL,"https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=musicalitymaker&count=5");
        curl_setopt($twitter,CURLOPT_TIMEOUT,2);
        curl_setopt($twitter,CURLOPT_RETURNTRANSFER,true);
        $contenu = curl_exec($twitter);
        $xml = new SimpleXMLElement($contenu);
        debug($xml->status->text);
    }

Je suis bloqué sur comment je parcoure avec un foreach le fichier xml de mon compte.

Merci de votre aide en avance!

6 réponses


Maenhyr
Réponse acceptée

Remplace

<?php $Twitter = $this->requestAction(array('controller'=>'twitter','action'=>'twitter')); ?>

par

<?php $tweets = $this->requestAction(array('controller'=>'twitter','action'=>'twitter')); ?>

et cela devrait fonctionner.

Merci pour l'erreur de parenthèse, j'ai enlevé du code perso mais j'ai pas été assez vigilant.

Il est à noter qu'il peut y avoir un soucis avec l'api de twitter sur des hébergements mutualisés (avec mon code ou n'importe quel autre code serveur) car l'api bloque le nombre de requêtes par IP. Il faudrait donc lancer l'appel depuis JS dans ces cas là.

Salut, voici un gist que j'ai réalisé https://gist.github.com/prbaron/4725934, réalisant ton besoin.

lakamark
Auteur

J'ai une erreur qui s'affichent :

Je fait un foreach Il me dit :

Notice (8): Undefined variable: tweets [APP/View/Elements/twitter.ctp, line 3]
Warning (2): Invalid argument supplied for foreach() [APP/View/Elements/twitter.ctp, line 3]

<?php $Twitter = $this->requestAction(array('controller'=>'twitter','action'=>'twitter')); ?>
<?php if(!isset($tweets'error'])) : ?>
    <?php foreach($tweets as $k => $v) :?>
        <div class="sidebar-tweet">
            <p>
                <?php echo $v'text']; ?>
                <br/>
                <em><?php echo $v'created_at']; ?></em>
            </p>
        </div> <!-- .tweet -->
    <?php endforeach; ?>
<?php endif; ?>

Voici le code source de la fonction :

<?php
class TwitterController extends AppController{

    public $uses = array('Twitter');

    public function twitter(){
        require APPLIBS.'PBTwitter'.DS.'PBTwitter.php';
        $Twitter = new PBTwitter();
        debug($Twitter->find("MusicalityMaker", array('count' => 1)));
    }
}

Merci de ton aide en avance.

Ps : j'ai trouvé une petite erreur dans ton foreach. Enlève une parenthèse à la fin de $v'created_at'] qui causer un fatal error.

<?php echo $v'created_at']); ?> par <?php echo $v'created_at']; ?>

Juste un petit oblie de votre part ;)

Ca n'a presque rien à voir et désolé pour le HS (à la limite si ça dérive sur une autre discussion on pourra aider à améliorer le code ce qui je pense était pas le but de prbaron ici) mais par pitié évitez ces $this->requestAction.

Fat models !

Si tu estimes que mon code est améliorable, n'hésite surtout pas à m'en faire part!

C'est pas ton code à toi qui est en question ;)

C'est la manière dont il récupère ses données avec un requestAction c'est pas très zoli zoli ;D (encore une fois désolé pour le HS)