แพ็คเกจนี้มอบวิธีง่ายๆ ในการสร้างฟีดสำหรับแอปพลิเคชัน Laravel ของคุณ รูปแบบที่รองรับ ได้แก่ RSS, Atom และ JSON แทบไม่จำเป็นต้องมีการเข้ารหัสในส่วนของคุณ เพียงทำตามคำแนะนำในการติดตั้ง อัปเดตไฟล์ปรับแต่งของคุณ เท่านี้คุณก็พร้อมแล้ว
Spatie เป็นเอเจนซี่ออกแบบเว็บไซต์ที่ตั้งอยู่ในเมืองแอนต์เวิร์ป ประเทศเบลเยียม คุณจะพบภาพรวมของโครงการโอเพ่นซอร์สทั้งหมดของเราบนเว็บไซต์ของเรา
เราลงทุนทรัพยากรจำนวนมากเพื่อสร้างแพ็คเกจโอเพ่นซอร์สที่ดีที่สุดในระดับเดียวกัน คุณสามารถสนับสนุนเราได้โดยการซื้อหนึ่งในผลิตภัณฑ์ที่ต้องชำระเงินของเรา
เราขอขอบคุณอย่างยิ่งที่คุณส่งโปสการ์ดจากบ้านเกิดของคุณถึงเรา โดยระบุว่าคุณใช้แพ็คเกจใดของเรา คุณจะพบที่อยู่ของเราในหน้าติดต่อของเรา เราเผยแพร่โปสการ์ดที่ได้รับทั้งหมดบนวอลล์โปสการ์ดเสมือนของเรา
คุณสามารถติดตั้งแพ็คเกจผ่านทางผู้แต่ง:
composer require spatie/laravel-feed
ลงทะเบียนเส้นทางที่ฟีดจะแสดงโดยใช้ feeds
-มาโคร
// In routes/web.php
Route:: feeds ();
หรือคุณสามารถส่งสตริงเป็นอาร์กิวเมนต์แรกของแมโครได้ สตริงจะถูกใช้เป็นคำนำหน้า URL สำหรับฟีดที่กำหนดค่าทั้งหมด
ถัดไป คุณต้องเผยแพร่ไฟล์กำหนดค่า:
php artisan feed:install
นี่คือสิ่งที่ดูเหมือน:
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 ' => '' ,
],
],
];
คุณสามารถเลือกเผยแพร่ไฟล์มุมมองได้:
php artisan vendor:publish --provider= " SpatieFeedFeedServiceProvider " --tag= " feed-views "
ลองจินตนาการว่าคุณมีโมเดลชื่อ NewsItem
ซึ่งมีบันทึกที่คุณต้องการให้แสดงในฟีด
ขั้นแรก คุณต้องใช้อินเทอร์เฟซ Feedable
กับโมเดลนั้น Feedable
ต้องการวิธีเดียว: toFeedItem
ซึ่งควรส่งคืนอินสแตนซ์ 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 );
}
}
หากคุณต้องการ การส่งคืนอาเรย์แบบเชื่อมโยงพร้อมคีย์ที่จำเป็นก็ช่วยได้เช่นกัน
// 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 ,
]);
}
}
ถัดไป คุณจะต้องสร้างวิธีการที่จะส่งคืนรายการทั้งหมดที่ต้องแสดงในฟีด คุณสามารถตั้งชื่อวิธีการนั้นตามที่คุณต้องการและคุณสามารถทำการสืบค้นตามที่คุณต้องการ
// app/NewsItem.php
public static function getFeedItems ()
{
return NewsItem:: all ();
}
สุดท้าย คุณต้องใส่ชื่อคลาสของคุณและ URL ที่คุณต้องการให้ฟีดแสดงผลในไฟล์กำหนดค่า:
// 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 ' ,
],
],
];
คีย์ items
จะต้องชี้ไปที่วิธีการที่ส่งกลับค่าใดค่าหนึ่งต่อไปนี้:
Feedable
FeedItem
แพ็คเกจนี้ให้มุมมอง feed::feed
ที่แสดงรายละเอียดฟีดของคุณนอกกรอบ
อย่างไรก็ตาม คุณสามารถใช้มุมมองที่กำหนดเองต่อฟีดได้โดยการระบุคีย์ view
ภายในการกำหนดค่าฟีดของคุณ
ในตัวอย่างต่อไปนี้ เรากำลังใช้ฟีด News
ก่อนหน้ากับมุมมอง feeds.news
ที่กำหนดเอง (อยู่ที่ 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 ' ,
],
],
];
หากต้องการค้นหาฟีด ผู้อ่านฟีดกำลังมองหาแท็กในส่วนหัวของเอกสาร html ที่มีลักษณะดังนี้:
< link rel =" alternate " type =" application/atom+xml " title =" News " href =" /feed " >
คุณสามารถเพิ่มสิ่งนี้ลงใน <head>
ของคุณผ่านมุมมองบางส่วน
@ include ( ' feed::links ' )
คุณสามารถใช้ส่วนประกอบใบมีดนี้แทนได้:
< x-feed-links />
composer test
โปรดดู CHANGELOG สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เปลี่ยนแปลงเมื่อเร็วๆ นี้
โปรดดูการมีส่วนร่วมเพื่อดูรายละเอียด
โปรดตรวจสอบนโยบายความปลอดภัยของเราเกี่ยวกับวิธีการรายงานจุดอ่อนด้านความปลอดภัย
ใบอนุญาตเอ็มไอที (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม