„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Soziale Netzwerke einfach mit Laravel und Stream aufbauen

Soziale Netzwerke einfach mit Laravel und Stream aufbauen

Gepostet am 2025-04-15
Durchsuche:406

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.

Building a Social Network with Laravel and Stream? Easy!

Schlüsselkonzepte:

  • stream laravel's feedManager vereinfacht Feed-Operationen und bietet vorgefertigte Feeds (Benutzer, Nachrichten, Benachrichtigung).
  • .
  • Stream speichert Daten als Aktivitäten (Schauspieler, Verb, Objekt, Zeit, plus benutzerdefinierte Daten).
  • .
  • Die folgencontroller verwendet feedManager , um Feeds entsprechend zu folgen/nicht zu aktualisieren.
  • Aktivitäten sind angereichert vor der Anzeige, wandeln Sie Rohdaten in ein aufsichtsfreundliches Format.
  • .
  • stream unterstützt verschiedene Feed -Typen (Nachrichten, Benachrichtigungen) und ermöglicht benutzerdefinierte Vorlagen für verschiedene Aktivitäten.

Aktivitätsdatenstruktur:

stream repräsentiert Daten als Aktivitäten mit zumindest: Schauspieler, Verb, Objekt und Zeit. Benutzerdefinierte Felder sind ebenfalls erlaubt.
  • Objekt:
  • Verweis auf die Modellinstanz.
  • Schauspieler:
  • Verweis auf den Benutzer, der die Aktivität erstellt.
  • verb:
  • String, der die Aktion darstellt (z. B. 'erstellt').

Beispiel: Definieren der Aktivitätsverb in der post

Modell:
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:

Die 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 sind verfügbar hier

.

folgen/nicht folgen der Funktionalität mit FeedManager:

Die folgencontroller wird aktualisiert, um feedManager

für effiziente Follow/Unbefugnisaktionen zu verwenden:
// 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

wird erstellt, um das Abrufen von Feeds zu behandeln und anzeigen:
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

verarbeitet die Datentransformation für die Ansichtsrending. Eine Route ist definiert, um auf diese Controller -Aktion zuzugreifen.

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

erstellt.

. . example

create.blade.php

{{ 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

folgt
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 (

notification_follow.blade.php

) 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.

.
Neuestes Tutorial Mehr>

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