首頁 >後端開發 >php教程 >用Laravel和流建立社交網絡?簡單的!

用Laravel和流建立社交網絡?簡單的!

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌原創
2025-02-10 08:59:08791瀏覽

>本文基於上一篇有關使用流中laravel應用程序添加“關注”功能的教程。 本部分著重於配置用於活動跟踪的模型,探索流的提要類型,檢索feed並在視圖中渲染。

Building a Social Network with Laravel and Stream? Easy!

密鑰概念:

    >流laravel's
  • 簡化了供稿操作,提供預先構建的供稿(用戶,新聞,通知)。 FeedManager>
  • > stream將數據存儲為
  • 活動(Actor,動詞,對象,時間,以及自定義數據)。
  • 使用
  • FollowController進行以下/取消關注,相應地更新feed。 FeedManager 在顯示之前,
  • 活動是
  • 富集,將原始數據轉換為對視圖的格式。
  • >流支持各種供稿類型(新聞,通知),允許自定義模板用於不同的活動。

活動數據結構:

流將數據表示為活動至少:演員,動詞​​,對象和時間。 還允許自定義字段。

  • 對象:引用模型實例。
  • 演員:
  • 引用用戶創建活動的用戶。 >
  • >動詞:
  • 字符串表示動作(例如,'創建')。
  • >示例:在
中定義

activityVerb> Post

<code class="language-php">class Post extends Model
{
    // ... other code ...

    /**
     * Stream: Activity verb for post creation.
     */
    public function activityVerb()
    {
        return 'created';
    }
}</code>
利用feedManager:

> >簡化了飼料相互作用。 它通過>的外牆別名訪問。

>

FeedManager預先配置的提要: > config/app.php

提供預先構建的提要:用戶,新聞和通知。 此示例主要使用新聞和通知提要。 有關其他提要類型的更多詳細信息,請參見

>。 遵循/未關注饋線的功能:

>

FeedManager已更新以使用以進行有效的關注/取消關注操作:

顯示feeds: a

是為處理feed檢索和顯示的創建:

FollowControllerFeedManager方法處理視圖渲染的數據轉換。 定義了一條路由以訪問此控制器操作。

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

>模板:

使用局部(FeedsController)來渲染單個活動,通過豐富的活動來查看迭代。 自定義活動部分(例如,用於郵政創建的

>)在 view文件夾中創建
<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>
示例

部分:enrich

<code class="language-php">class Post extends Model
{
    // ... other code ...

    /**
     * Stream: Activity verb for post creation.
     */
    public function activityVerb()
    {
        return 'created';
    }
}</code>

>通知feed:

模型已更新以包括通知供稿處理: Follow 為通知feed創建了類似的控制器操作,路由和視圖(

)。 單獨的部分(
<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>
)用於以下通知。

> notifications.blade.phpnotification_follow.blade.php結論:

>流簡化了在Laravel應用中添加魯棒的飼料功能。 該教程演示瞭如何跟踪各種活動,管理不同的飼料類型並在視圖中有效地渲染它們。 鼓勵進一步探索流的功能。

FAQ(稍微重新格式化):>

>常見問題解答部分寫得很好,並提供了有用的信息。 不需要重大更改,但是較小的格式調整可以提高可讀性。 考慮為更好的視覺組織使用編號列表或粗體鍵術語。

以上是用Laravel和流建立社交網絡?簡單的!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn