Heim >Backend-Entwicklung >PHP-Tutorial >Ein soziales Netzwerk mit Laravel und Stream aufbauen? Einfach!
Dieser Artikel baut auf einem früheren Tutorial zum Hinzufügen der Funktion "Folge" einer Laravel -Anwendung mit Stream auf. Dieser Teil konzentriert sich auf die Konfiguration von Modellen für die Aktivitätsverfolgung, das Erforschen der Feed -Typen von Stream, das Abrufen von Feeds und das Rendern in Ansichten.
Schlüsselkonzepte:
FeedManager
vereinfacht die Feed-Operationen und bietet vorgefertigte Feeds (Benutzer, Nachrichten, Benachrichtigung). FollowController
verwendet FeedManager
zum Folgen/Abnehmen und aktualisiert Feeds entsprechend. Aktivitätsdatenstruktur:
Stream repräsentiert Daten als Aktivitäten mit zumindest: Schauspieler, Verb, Objekt und Zeit. Benutzerdefinierte Felder sind ebenfalls erlaubt.
Beispiel: Definieren des activityVerb
im Post
Modell:
<code class="language-php">class Post extends Model { // ... other code ... /** * Stream: Activity verb for post creation. */ public function activityVerb() { return 'created'; } }</code>
Verwenden Sie den FeedManager:
Die FeedManager
vereinfacht Feed -Interaktionen. Es wird über den Alias der Fassade in config/app.php
zugegriffen.
Vorkonfigurierte Feeds:
Das FeedManager
bietet vorgefertigte Feeds: Benutzer, Nachrichten und Benachrichtigung. In diesem Beispiel wird in erster Linie Nachrichten- und Benachrichtigungs -Feeds verwendet. Weitere Details zu anderen Feed -Typen finden Sie hier .
Die Funktionalität mit FeedManager folgen/nicht folgen:
Die FollowController
wird aktualisiert, um FeedManager
für effiziente Follow/Unerfolgungsaktionen zu verwenden:
<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>
Feeds anzeigen:
a FeedsController
wird erstellt, um das Abrufen von Feeds zu verarbeiten und anzuzeigen:
<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>
Die enrich
-Methode behandelt die Datenumwandlung für die Ansichtsrendern. Eine Route ist definiert, um auf diese Controller -Aktion zuzugreifen.
Templating:
Die newsfeed
View iteriert durch angereicherte Aktivitäten unter Verwendung eines partiellen (stream-laravel::render_activity
) zum Rendern individueller Aktivitäten. Benutzerdefinierte Aktivitäten (z. B. created.blade.php
für die Erstellung nach der Erstellung) werden im Ordner activity
Ansicht erstellt.
Beispiel created.blade.php
partiell:
<code class="language-php">class Post extends Model { // ... other code ... /** * Stream: Activity verb for post creation. */ public function activityVerb() { return 'created'; } }</code>
Benachrichtigungsfutter:
Das Modell Follow
wird aktualisiert, um die Benachrichtigungs -Feed -Handhabung einzuschließen:
<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>
Eine ähnliche Controller -Aktion, Route und Ansicht (notifications.blade.php
) wird für den Benachrichtigungs -Feed erstellt. Ein separates Teil (notification_follow.blade.php
) wird für folge Benachrichtigungen verwendet.
Schlussfolgerung:
Stream vereinfacht die Zugabe robuster Feed -Funktionen zu Laravel -Anwendungen. Das Tutorial zeigt, wie verschiedene Aktivitäten verfolgt, verschiedene Feed -Typen verwaltet und in Ansichten effizient gerendert werden. Eine weitere Erforschung der Fähigkeiten des Streams wird gefördert.
FAQs (leicht neu formatiert):
Der FAQS-Abschnitt ist gut geschrieben und bietet hilfreiche Informationen. Es sind keine signifikanten Änderungen erforderlich, aber geringfügige Formatierungsanpassungen könnten die Lesbarkeit verbessern. Erwägen Sie, eine nummerierte Liste oder fetthaltige Schlüsselbegriffe für eine bessere visuelle Organisation zu verwenden.
Das obige ist der detaillierte Inhalt vonEin soziales Netzwerk mit Laravel und Stream aufbauen? Einfach!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!