Heim >Backend-Entwicklung >PHP-Tutorial >Ein soziales Netzwerk mit Laravel und Stream aufbauen? Einfach!

Ein soziales Netzwerk mit Laravel und Stream aufbauen? Einfach!

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌Original
2025-02-10 08:59:08791Durchsuche

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 Laravels FeedManager vereinfacht die Feed-Operationen und bietet vorgefertigte Feeds (Benutzer, Nachrichten, Benachrichtigung).
  • Stream speichert Daten als Aktivitäten (Akteur, Verb, Objekt, Zeit plus benutzerdefinierte Daten).
  • Die FollowController verwendet FeedManager zum Folgen/Abnehmen und aktualisiert Feeds entsprechend.
  • Aktivitäten sind vor der Anzeige angereichert , wobei Rohdaten in ein viewfreundliches Format umgewandelt werden.
  • 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.
  • Akteur: Verweis auf den Benutzer, der die Aktivität erstellt.
  • Verb: Zeichenfolge, die die Aktion darstellt (z. B. 'erstellt').

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn