IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

Utilisation simple de SimplePie [5.6]


Sujet :

Laravel PHP

  1. #1
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut Utilisation simple de SimplePie
    Bonjour,

    J'essaye de faire un simple lecteur de flux RSS avec SimplePie qui semble bien.
    Mais j'ai une erreur que je ne comprends pas :
    Class 'App\Http\Controllers\Rss' not found

    Voici mon web.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::get('/rss', 'Controller@Rss')->name('rss');

    La fonction dans mon controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
     
    namespace App\Http\Controllers;
     
    use Illuminate\Foundation\Bus\DispatchesJobs;
    use Illuminate\Routing\Controller as BaseController;
    use Illuminate\Foundation\Validation\ValidatesRequests;
    use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
     
    class Controller extends BaseController
    {
        use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
     
    public function Rss() {
      require_once '../vendor/simplepie/simplepie/autoloader.php';
     
    $url = 'http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml';
    $feed = new SimplePie();
    $feed->set_feed_url($url);
    $feed->init();
     
    return view('rss', [
      'feed' => $feed,
    ]);
    }

    Et ma vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @php
       echo '<h1>' . $feed->get_title() . '</h1>';
       echo '<p>' . $feed->get_description() . '</p>';
      @endphp
     
    @stop
    Je me suis basé sur cet exemple simple :
    https://www.sitepoint.com/consuming-...ith-simplepie/

    Y a-t-il quelque chose que j'oublie ?
    Merci d'avance,
    Librement,

    ANDRE Ani

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    1- installer la librairie via composer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    composer require simplepie/simplepie
    2 - Créer un controller séparé : PieController ou mieux en ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php artisan make:controller PieController
    3 - Créer une fonction suivant les convention, c'est a dire commençant par une minuscule : rss

    Du coup cela devrais donner :

    route :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Route::get('/rss', 'PieController@rss')->name('rss');
    Controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?php
    namespace App\Http\Controllers;
     
    use SimplePie/SimplePie  //à vérifier 
     
    class PieController extends Controller
    {
    public function rss() {
     
    $url = 'http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml';
    $feed = new SimplePie();
    $feed->set_feed_url($url);
    $feed->init();
     
    return view('rss', [
      'feed' => $feed,
    ]);
    }
     
    }

  3. #3
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Merci ;-)

    Use simplepie fonctionne.

    Par contre, j'ai un soucis de cache maintenant :
    ./cache is not writable.

    Du coup, j'ai ajouté ça dans la config :
    $feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/app/cache');

    Et créé un dossier cache dans /app, avec tous les droits, mais rien n'y fait...

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Mais pourquoi faire compliquer.

    Vous devez changer les bons droits dans /storage

  5. #5
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Je ne voulais pas faire compliqué ;-)
    C'est parce que j'ai eu ce message que j'ai créé un dossier cache à la racine et spécifié un chemin.

    storage est autorisé en écriture, j'upload des fichiers dedans.

    J'ai supprimé le dossier cache et enlevé la ligne de conf dans le controller, mais j'ai tjs le message :
    ./cache is not writable.

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Etes vous sur que storage/framework/cache à les bons droits ?

  7. #7
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Je ne savais pas où se cachait le dossier cache ;-)
    Mais je viens de vérifier et /storage/framework/cache à bien les droits en lecture/écriture...

    Je n'ai pas mis ceci :
    feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/storage/framework/cache');

    p.s. : on peut se tutoyer ;-)

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Il y a un fichier laravel.log .....c'est quoi les dernières lignes ?

  9. #9
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [2018-11-05 18:04:51] local.ERROR: ./cache is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable. {"exception":"[object] (ErrorException(code: 0): ./cache is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable. at /home/boutique/public_html/dev/test3/5project/vendor/simplepie/simplepie/library/SimplePie.php:1474)
    [stacktrace]
    #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(512, './cache is not ...', '/home/boutique/...', 1474, Array)
    #1 /home/boutique/public_html/dev/test3/5project/vendor/simplepie/simplepie/library/SimplePie.php(1474): trigger_error('./cache is not ...', 512)
    #2 /home/boutique/public_html/dev/test3/5project/app/Http/Controllers/PieController.php(16): SimplePie->init()
    #3 [internal function]: App\\Http\\Controllers\\PieController->Rss()
    #4 /home/boutique/public_html/dev/test3/5project/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
    #5 /home/boutique/public_html/dev/test3/5project/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('rss', Array)

  10. #10
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Oki et ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    public function rss() {
     
    $url = 'http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml';
    $feed = new SimplePie();
    $feed->set_feed_url($url);
    // enabled le cache
    $feed->enable_cache();
    $feed->init();
     
    return view('rss', [
      'feed' => $feed,
    ]);
    }

  11. #11
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Toujours pareil...
    J'ai même désinstallé et ré-installé simplepie.

    Quand ça veut pas, ça veut pas...

  12. #12
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bon je viens de faire une install et voila comment j'y arrive, tu avais la bonne piste avec le cache, sauf qu'il faut pointer sur le cache de Laravel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function rss(){
            $url = 'http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml';
            $feed = new \SimplePie();
            $feed->set_cache_location(storage_path().'/framework/cache');
            $feed->set_feed_url($url);
            $feed->init();
            dd($feed->get_title());
        }

  13. #13
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Ok, il fallait le savoir, je n'ai rien trouvé la-dessus. Merci ;-)

    Voilà mon controller maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function rss() {
     
        $url = 'https://www.toolinux.com/spip.php?page=backend';
        $feed = new \SimplePie();
        $feed->set_cache_location(storage_path().'/framework/cache');
        $feed->set_feed_url($url);
        $feed->init();
        dd($feed->get_title());
     
        return view('rss', [
          'feed' => $feed,
        ]);
    }
    Mais, j'ai une page blanche avec le titre du site en haut, c'est tout...
    A quoi correspond dd par contre ?

    Pour d'autres infos du flux, je dois faire la même chose comme ça :
    dd($feed->get_description());
    dd($feed->get_date());

    Et passer les infos à la vue ?

    Puis, dans la vue, un :
    foreach ($feed->get_items() as $item):

    C'est bien cela ?

  14. #14
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    dd c'est un dump ? Pour vérifier qu'il y a quelque chose dans la variable c'est ça ?

  15. #15
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Oui, c'est l'équivalent d'un var_dump + die(), en mieux

    Pour le cache , j'ai trouvé dans la doc de simplepie et adapter pour le cache de Laravel...

  16. #16
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Bon, ça marche, j'affiche mon flux RSS comme il faut ;-)
    A voir plus tard pour afficher plusieurs flux.

    Là, vais essayer de refaire mon envoie de mail.

    Merci beaucoup pour l'aide ;-)
    Y a des chances que je reviennes bientôt ici.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation simple d'un objet COM
    Par andrebernard dans le forum C++
    Réponses: 52
    Dernier message: 28/05/2008, 15h21
  2. Utilisation simple d'une mémoire partagée sous linux
    Par dreamteam dans le forum Linux
    Réponses: 1
    Dernier message: 09/02/2007, 17h39
  3. [JMS] Utilisation simple
    Par caballero dans le forum Java EE
    Réponses: 2
    Dernier message: 25/01/2007, 03h04
  4. utilisation simple de xmlhttpRequest
    Par alain31tl dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 10/01/2006, 22h19
  5. Utilisation simple d'@@IDENTITY avec asp
    Par Ajrarn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo