Menghadapi suatu masalah, orang sering menemukan beberapa paket, menginstal dan menggunakannya meskipun masalahnya sederhana, dan paket-paket itu terlalu berlebihan.
Saya selalu lebih suka memecahkan masalah dengan "cara mudah" terlebih dahulu. Dan dalam hal ini, sangat sederhana.
Buat Routing
Di rute Anda:
Route::get('/feed', 'FeedController');
Buat File Controller
Dalam file FeedController.php:
<?php
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class FeedController extends Controller
{
public function __invoke()
{
$posts = Post::all();
$content = view('feed', compact('posts'));
return response($content, 200)
->header('Content-Type', 'text/xml');
}
}
Buat File view
Dalam tampilan feed.blade.php Anda, masukkan konten feed XML di:
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>{{ url('/feed') }}</id>
<link href="{{ url('/feed') }}"></link>
<title><![CDATA[{{ config('app.name') }}]]></title>
<description></description>
<language></language>
<updated>{{ $posts->first()->updated_at->format('D, d M Y H:i:s +0000') }}</updated>
@foreach ($posts as $post)
<entry>
<title><![CDATA[{{ $post->title }}]]></title>
<link rel="alternate" href="{{ $post->path() }}" />
<id>{{ $post->path() }}</id>
<author>
<name> <![CDATA[{{ $post->user->name }}]]></name>
</author>
<summary type="html">
<![CDATA[{!! parsedown($post->content) !!}]]>
</summary>
<category type="html">
<![CDATA[]]>
</category>
<updated>{{ $post->updated_at->format('D, d M Y H:i:s +0000') }}</updated>
</entry>
@endforeach
</feed>
Ubah konten sesuai permintaan Anda. Dan nikmati hasilnya!