Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Γεια σας.

Είμαι νέος στο Yii και προσπαθώ να μάθω να το χειρίζομαι. Θέλω να φτιάξω ένα parser* για RSS Feeds, δυστυχώς όμως μέσα στα extensions δεν βρήκα κάποιον που να δουλεύει σωστά και να είναι compatible με  όλους τους τύπους των feeds.

Κατάφερα να φτιάξω ένα parser  με το SimplePie .  Δουλεύει άψογα και θα ήθελα να χρησιμοποιήσω το SimplePie στο Yii.
O parser που έφτιαξα:

Spoiler

 


<?php
    //autoloader του SimplePie
    include_once 'autoloader.php';

    $url = 'http://www.catanacomics.com/rss';
    $feed = new SimplePie();
    $feed->set_feed_url($url);
    $feed->init();

    $items = $feed->get_Items(1);

?>
    <ul>
<?php
    $i=0;
    foreach ($items as $item) {
        $description = $item->get_description();
     foreach ($descriptions as $description) {
            echo'<li><pre>'.$description.'</pre></li>';
        }*/
        $i++;
    }
?>
    </ul>

 

 

 

 

Για να εισάγω την βιβλιοθήκη στο Yii2 ακολούθησα αυτόν τον οδηγό. Έκανα τα παρακάτω βήματα

1.Έβαλα το simplepie στο φάκελο vendror.

2.Έβαλα στο entry script(basepath/backend/web/index.php) τον autoloader του simple pie όπως φαίνεται στο spoiller παρακάτω:

        

Spoiler

        


<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require __DIR__ . '/../../vendor/simplepie-1.5/autoloader.php';
require __DIR__ . '/../../vendor/autoload.php';
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../../common/config/bootstrap.php';
require __DIR__ . '/../config/bootstrap.php';

$config = yii\helpers\ArrayHelper::merge(
    require __DIR__ . '/../../common/config/main.php',
    require __DIR__ . '/../../common/config/main-local.php',
    require __DIR__ . '/../config/main.php',
    require __DIR__ . '/../config/main-local.php'
);

(new yii\web\Application($config))->run();

 

3.Τέλος μέσα σε μια κλάση όπου βρίσκεται στο basepath/backend/components  προσπάθησα να εισάγω μία κλάση που θα φτιάχνει το αντικείμενο μου.


class ParserComponent extends Component
{

	....
    public function getFeed($feedUrl)
    {
        $feed = new SimplePie();
        $feed->set_feed_url($feedUrl);
        $feed->init();

        
        return $feed;
    }
	...


}

 

Όταν πάω να την χρησιμοποιήσω μου επιστρέφει το παρακάτω Error:

Error: Class 'backend\components\SimplePie' not found 

 

Αφού θεωρητικά την έκανε autoload, δεν θα έπρεπε να την βρίσκει ;

*parser: Εργαλείο που θα κάνει προσπέλαση το feed και θα παίρνει διάφορα στοιχεία από αυτό, όπως για παράδειγμα τον τίτλο, τις εικόνες του κτλ

Επεξ/σία από manolis940
Δημοσ.

Μάλλον τα κατάλαβες λίγο στραβά, δεν πειράζει, υπομονή θέλει. Ο τρόπος που προτιμάται για να εισάγεις βιβλιοθήκες από τρίτους είναι να χρησιμοποιήσεις τον https://getcomposer.org 

Αφότου τον εγκαταστήσεις, βρίσκεις την βιβλιοθήκη που σε ενδιαφέρεις στο https://packagist.org , στην περίπτωσή σου είναι https://packagist.org/packages/simplepie/simplepie

Στο directory του Yii2 είτε προσθέτεις χειροκίνητα το dependency στο αρχείο composer.json είτε τρέχεις την εντολή `composer require simplepie/simplepie`. `composer install` στο τέλος.

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...