Rumah >pembangunan bahagian belakang >tutorial php >Membina rangkaian sosial dengan Laravel dan Stream? Mudah!
Artikel ini dibina pada tutorial sebelumnya tentang menambah ciri "Ikuti" ke aplikasi Laravel menggunakan Stream. Bahagian ini memberi tumpuan kepada mengkonfigurasi model untuk penjejakan aktiviti, meneroka jenis suapan Stream, mengambil suapan, dan menjadikannya dalam pandangan.
Konsep Utama:
FeedManager
FollowController
untuk mengikuti/tidak mengikuti, mengemas kini suapan dengan sewajarnya. FeedManager
Struktur Data Aktiviti:
Stream mewakili data sebagai aktiviti dengan sekurang -kurangnya: pelakon, kata kerja, objek, dan masa. Bidang tersuai juga dibenarkan.
dalam model activityVerb
: Post
<code class="language-php">class Post extends Model { // ... other code ... /** * Stream: Activity verb for post creation. */ public function activityVerb() { return 'created'; } }</code>
Menggunakan FeedManager:
memudahkan interaksi suapan. Ia diakses melalui alias fasad yang ditetapkan dalam FeedManager
. config/app.php
suapan pra-konfigurasi:
menyediakan suapan pra-dibina: pengguna, berita, dan pemberitahuan. Contoh ini terutamanya menggunakan suapan berita dan pemberitahuan. Butiran lanjut mengenai jenis suapan lain boleh didapati FeedManager
di sini .
fungsian fungsian dengan feedmanager:
dikemas kini untuk menggunakan FollowController
untuk tindakan ikuti/tidak ikut yang cekap: FeedManager
<code class="language-php">// app/Http/Controllers/FollowController.php public function follow(User $user) { if (!Auth::user()->isFollowing($user->id)) { Auth::user()->follows()->create(['target_id' => $user->id]); FeedManager::followUser(Auth::id(), $user->id); return back()->with('success', 'Now following ' . $user->name); } else { return back()->with('error', 'Already following this user.'); } } public function unfollow(User $user) { if (Auth::user()->isFollowing($user->id)) { $follow = Auth::user()->follows()->where('target_id', $user->id)->first(); FeedManager::unfollowUser(Auth::id(), $follow->target_id); $follow->delete(); return back()->with('success', 'Unfollowed ' . $user->name); } else { return back()->with('error', 'Not following this user.'); } }</code>
Memaparkan suapan:
a
FeedsController
<code class="language-php">use GetStream\StreamLaravel\Enrich; class FeedsController extends Controller { // ... other code ... public function newsFeed(Request $request) { $feed = FeedManager::getNewsFeeds($request->user()->id)['timeline']; $activities = $feed->getActivities(0, 25)['results']; $activities = $this->enrich()->enrichActivities($activities); return view('feed.newsfeed', ['activities' => $activities]); } private function enrich() { return new Enrich; } // ... other methods ... }</code>mengendalikan transformasi data untuk rendering paparan. Laluan ditakrifkan untuk mengakses tindakan pengawal ini.
enrich
Lihat melangkah melalui aktiviti diperkaya, menggunakan separa (
untuk penciptaan pasca) dicipta dalam folder Lihat newsfeed
. stream-laravel::render_activity
created.blade.php
Contoh activity
Partial:
<code class="language-php">class Post extends Model { // ... other code ... /** * Stream: Activity verb for post creation. */ public function activityVerb() { return 'created'; } }</code>
Pemberitahuan suapan:
Model Follow
dikemas kini untuk memasukkan pengendalian suapan pemberitahuan:
<code class="language-php">// app/Http/Controllers/FollowController.php public function follow(User $user) { if (!Auth::user()->isFollowing($user->id)) { Auth::user()->follows()->create(['target_id' => $user->id]); FeedManager::followUser(Auth::id(), $user->id); return back()->with('success', 'Now following ' . $user->name); } else { return back()->with('error', 'Already following this user.'); } } public function unfollow(User $user) { if (Auth::user()->isFollowing($user->id)) { $follow = Auth::user()->follows()->where('target_id', $user->id)->first(); FeedManager::unfollowUser(Auth::id(), $follow->target_id); $follow->delete(); return back()->with('success', 'Unfollowed ' . $user->name); } else { return back()->with('error', 'Not following this user.'); } }</code>
Tindakan pengawal, laluan, dan pandangan yang sama (notifications.blade.php
) dicipta untuk suapan pemberitahuan. Partial (notification_follow.blade.php
Kesimpulan:
Stream memudahkan penambahan fungsi suapan yang mantap ke aplikasi Laravel. Tutorial ini menunjukkan cara menjejaki pelbagai aktiviti, menguruskan jenis suapan yang berbeza, dan menjadikannya dengan cekap dalam pandangan. Penjelajahan lebih lanjut keupayaan Stream digalakkan.
FAQs (sedikit diperbaharui):
Seksyen Soalan Lazim ditulis dengan baik dan memberikan maklumat yang berguna. Tiada perubahan ketara diperlukan, tetapi pelarasan pemformatan kecil dapat meningkatkan kebolehbacaan. Pertimbangkan menggunakan senarai bernombor atau istilah utama yang berani untuk organisasi visual yang lebih baik.Atas ialah kandungan terperinci Membina rangkaian sosial dengan Laravel dan Stream? Mudah!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!