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 Feed-Operationen und bietet vorgefertigte Feeds (Benutzer, Nachrichten, Benachrichtigung). folgencontroller
verwendet feedManager
, um Feeds entsprechend zu folgen/nicht zu aktualisieren. Aktivitätsdatenstruktur:
stream repräsentiert Daten als Aktivitäten mit zumindest: Schauspieler, Verb, Objekt und Zeit. Benutzerdefinierte Felder sind ebenfalls erlaubt.
Beispiel: Definieren der
Aktivitätsverb in der
post
class Post extends Model
{
// ... other code ...
/**
* Stream: Activity verb for post creation.
*/
public function activityVerb()
{
return 'created';
}
}
unter Verwendung des FeedManager:
Die
feedManager vereinfacht Feed -Interaktionen. Es wird über den Fassade alias zugegriffen, der in
config/app.php
festgelegt wurde. vorkonfigurierte Feeds:
.folgen/nicht folgen der Funktionalität mit FeedManager:
Die
folgencontroller wird aktualisiert, um
feedManager
// 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.');
}
}
Anzeigen von Feeds:
a
feedsController
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 ...
}
Die
einbewertet
templatation:
die
newsfeed Iterates durch angereicherte Aktivitäten anhand eines Teils (
stream-laravel :: render_activity ) zum Rendern individueller Aktivitäten. Benutzerdefinierte Aktivitäten teilweise (z. B.,
erstellt.blade.php für die Posterstellung) werden in der
Aktivität
. .
example
{{ date('F j, Y, g:i a', strtotime($activity['time'])) }}
{{ $activity['actor']['name'] }} created a new post titled {{ $activity['object']['title'] }}
Benachrichtigung Feed:
Das Modell
class Follow extends Model
{
use \GetStream\StreamLaravel\Eloquent\ActivityTrait;
// ... other code ...
public function activityNotify()
{
$targetFeed = FeedManager::getNotificationFeed($this->target_id);
return [$targetFeed];
}
public function activityVerb()
{
return 'follow';
}
public function activityExtraData()
{
return ['followed' => $this->target, 'follower' => $this->user];
}
}
class folge erweitertes modell
{
Verwenden Sie \ getStream \ streamlaravel \ eloquent \ ActivityTrait;
// ... anderer Code ...
öffentliche Funktionsaktivitätsnotify ()
{
$ targetFeed = feedManager :: getNotificationFeed ($ this-> target_id);
return [$ targetFeed];
}
öffentliche Funktionsaktivitätsverb ()
{
zurück 'folge';
}
öffentliche FunktionsaktivitätsExtradata ()
{
return ['folgte' => $ this-> Ziel, 'Follower' => $ this-> user];
}
}
Eine ähnliche Controller -Aktion, Route und Ansicht ( notifications.blade.php
) werden für den Benachrichtigungs -Feed erstellt. Ein separater Teil (
) wird für folge Benachrichtigungen verwendet.
Abschluss: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 Untersuchung der Fähigkeiten von Stream 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 fundierte Schlüsselbegriffe für eine bessere visuelle Organisation zu verwenden.
.Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3