Ce package fournit un moyen simple de générer un flux pour votre application Laravel. Les formats pris en charge sont RSS, Atom et JSON. Il n’y a presque aucun codage requis de votre part. Suivez simplement les instructions d'installation, mettez à jour votre fichier de configuration et vous êtes prêt à partir.
Spatie est une agence de webdesign basée à Anvers, en Belgique. Vous trouverez un aperçu de tous nos projets open source sur notre site Internet.
Nous investissons beaucoup de ressources dans la création des meilleurs packages open source de leur catégorie. Vous pouvez nous soutenir en achetant l'un de nos produits payants.
Nous apprécions grandement que vous nous envoyiez une carte postale de votre ville natale, mentionnant le(s) forfait(s) que vous utilisez. Vous trouverez notre adresse sur notre page contact. Nous publions toutes les cartes postales reçues sur notre mur virtuel de cartes postales.
Vous pouvez installer le package via composer :
composer require spatie/laravel-feed
Enregistrez les itinéraires sur lesquels les flux seront affichés à l’aide de la macro feeds
.
// In routes/web.php
Route:: feeds ();
Facultativement, vous pouvez transmettre une chaîne comme premier argument de la macro. La chaîne sera utilisée comme préfixe d'URL pour tous les flux configurés.
Ensuite, vous devez publier le fichier de configuration :
php artisan feed:install
Voici à quoi cela ressemble :
return [
' feeds ' => [
' main ' => [
/*
* Here you can specify which class and method will return
* the items that should appear in the feed. For example:
* [AppModel::class, 'getAllFeedItems']
*
* You can also pass an argument to that method. Note that their key must be the name of the parameter: *
* [AppModel::class, 'getAllFeedItems', 'parameterName' => 'argument']
*/
' items ' => '' ,
/*
* The feed will be available on this url.
*/
' url ' => '' ,
' title ' => ' My feed ' ,
' description ' => ' The description of the feed. ' ,
' language ' => ' en-US ' ,
/*
* The image to display for the feed. For Atom feeds, this is displayed as
* a banner/logo; for RSS and JSON feeds, it's displayed as an icon.
* An empty value omits the image attribute from the feed.
*/
' image ' => '' ,
/*
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
*/
' format ' => ' atom ' ,
/*
* The view that will render the feed.
*/
' view ' => ' feed::atom ' ,
/*
* The mime type to be used in the <link> tag. Set to an empty string to automatically
* determine the correct value.
*/
' type ' => '' ,
/*
* The content type for the feed response. Set to an empty string to automatically
* determine the correct value.
*/
' contentType ' => '' ,
],
],
];
Vous pouvez éventuellement publier les fichiers de vue :
php artisan vendor:publish --provider= " SpatieFeedFeedServiceProvider " --tag= " feed-views "
Imaginez que vous ayez un modèle nommé NewsItem
qui contient les enregistrements que vous souhaitez afficher dans le flux.
Vous devez d’abord implémenter l’interface Feedable
sur ce modèle. Feedable
attend une méthode : toFeedItem
, qui doit renvoyer une instance FeedItem
.
// app/NewsItem.php
use Illuminate Database Eloquent Model ;
use Spatie Feed Feedable ;
use Spatie Feed FeedItem ;
class NewsItem extends Model implements Feedable
{
public function toFeedItem (): FeedItem
{
return FeedItem:: create ()
-> id ( $ this -> id )
-> title ( $ this -> title )
-> summary ( $ this -> summary )
-> updated ( $ this -> updated_at )
-> link ( $ this -> link )
-> authorName ( $ this -> author )
-> authorEmail ( $ this -> authorEmail );
}
}
Si vous préférez, renvoyer un tableau associatif avec les clés nécessaires fera également l'affaire.
// app/NewsItem.php
use Illuminate Database Eloquent Model ;
use Spatie Feed Feedable ;
use Spatie Feed FeedItem ;
class NewsItem extends Model implements Feedable
{
public function toFeedItem (): FeedItem
{
return FeedItem:: create ([
' id ' => $ this -> id ,
' title ' => $ this -> title ,
' summary ' => $ this -> summary ,
' updated ' => $ this -> updated_at ,
' link ' => $ this -> link ,
' authorName ' => $ this -> authorName ,
]);
}
}
Ensuite, vous devrez créer une méthode qui renverra tous les éléments qui doivent être affichés dans le flux. Vous pouvez nommer cette méthode comme vous le souhaitez et effectuer n’importe quelle requête de votre choix.
// app/NewsItem.php
public static function getFeedItems ()
{
return NewsItem:: all ();
}
Enfin, vous devez mettre le nom de votre classe et l'url où vous souhaitez que le flux soit rendu dans le fichier de configuration :
// config/feed.php
return [
' feeds ' => [
' news ' => [
/*
* Here you can specify which class and method will return
* the items that should appear in the feed. For example:
* 'AppModel@getAllFeedItems'
* or
* ['AppModel', 'getAllFeedItems']
*
* You can also pass an argument to that method. Note that their key must be the name of the parameter: *
* ['AppModel@getAllFeedItems', 'parameterName' => 'argument']
* or
* ['AppModel', 'getAllFeedItems', 'parameterName' => 'argument']
*/
' items ' => ' AppNewsItem@getFeedItems ' ,
/*
* The feed will be available on this url.
*/
' url ' => ' /feed ' ,
' title ' => ' All newsitems on mysite.com ' ,
/*
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
*/
' format ' => ' atom ' ,
/*
* Custom view for the items.
*
* Defaults to feed::feed if not present.
*/
' view ' => ' feed::feed ' ,
],
],
];
La clé items
doit pointer vers une méthode qui renvoie l’un des éléments suivants :
Feedable
sFeedItem
s Ce package fournit, prêt à l'emploi, la vue feed::feed
qui affiche les détails de vos flux.
Cependant, vous pouvez utiliser une vue personnalisée par flux en fournissant une clé view
dans la configuration de votre flux.
Dans l'exemple suivant, nous utilisons le fil News
précédent avec une vue feeds.news
personnalisée (située sur resources/views/feeds/news.blade.php
) :
// config/feed.php
return [
' feeds ' => [
' news ' => [
' items ' => [ ' AppNewsItem ' , ' getFeedItems ' ],
' url ' => ' /feed ' ,
' title ' => ' All newsitems on mysite.com ' ,
/*
* The format of the feed. Acceptable values are 'rss', 'atom', or 'json'.
*/
' format ' => ' atom ' ,
/*
* Custom view for the items.
*
* Defaults to feed::feed if not present.
*/
' view ' => ' feeds.news ' ,
],
],
];
Pour découvrir un flux, les lecteurs de flux recherchent une balise dans la section d'en-tête de vos documents HTML qui ressemble à ceci :
< link rel =" alternate " type =" application/atom+xml " title =" News " href =" /feed " >
Vous pouvez l'ajouter à votre <head>
via une vue partielle.
@ include ( ' feed::links ' )
Comme alternative, vous pouvez utiliser ce composant de lame :
< x-feed-links />
composer test
Veuillez consulter CHANGELOG pour plus d'informations sur ce qui a changé récemment.
Veuillez consulter CONTRIBUER pour plus de détails.
Veuillez consulter notre politique de sécurité pour savoir comment signaler les vulnérabilités de sécurité.
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.