Bonsoir à tous !
Voilà, j'essaie d'intégrer mes derniers tweets dans l'application CakePHP sur laquelle je travaille mais, malgrés le fait que j'inclu le fichier php venant du très bon tuto "Afficher ses derniers Tweets" qui fonctionne parfaitement sur un autre de mes sites, le système me retourne que la variable tweets est introuvable:

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

Pour inclure le fichier, j'ai suivi ce qui se disait sur Internet et je l'ai placé dans le dossier "Vendor" pour ensuite l'appeler dans le fichier .ctp avec :

<?php App::import('Vendor','last-tweets.php') ?>

Voici le code complet:

<div class="tweet">
 <?php App::import('Vendor','last-tweets.php') ?>
            <h3>Derniers Tweets</h3>
            <ul id="carroussel">
              <?php foreach ($tweets as $k => $tweet): ?> 
                  <li class="last_tweets"><? echo preg_replace ('#(ht{2}ps?:/{2}[^[:blank:]]+)#i', '<a href="\1" target="_blank" title="Lire l\'article">\1</a>', $tweet->text) ?></li>
              <?php endforeach ?>
            </ul>
 </div>

Quelqu'un a-t-il une solution ?
Merci d'avance

4 réponses


Il serait mieux d'inclure ton fichier via le controller et d'affecter ta variable tweets à ta vue :)

Mass
Auteur

Salut, merci de ta réponse !
Dans la mesure où il s'agit de mon layout par défaut, je n'ai pas de controller ... si ?

Au cours d'un projet j'ai eu à utiliser la librairie PHP TwitterOAuth et voici comment je l'ai utilisé:

// vendors/Twitter
// Dossier qui contiendra la librairie externe TwitterOAuth

// app/Controller/AppController.php
App::import('vendor','Twitter/TwitterOAuth');

class AppController extends Controller {

    public function beforeFilter() {
        $twitter = new TwitterOAuth($apiKey, $apiSecret, $tokenKey, $tokenSecret);
        //exemple de requête
        $tweets = $twitter->get('statuses/user_timeline', array('count' => 5));
        // passe la variable à la vue
        $this->set(compact('tweets'));
    }

Biensûr il s'agît ici d'un exemple, libre à toi de l'adapter à la situation pour ceci tu auras besoin de la documentation de TwitterOAuth et celle de l'API Twitter

Mass
Auteur

Merci Inspirat, je vais essayer :)