>本文基於上一篇有關使用流中laravel應用程序添加“關注”功能的教程。 本部分著重於配置用於活動跟踪的模型,探索流的提要類型,檢索feed並在視圖中渲染。
密鑰概念:
FeedManager
>
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:
FollowController
FeedManager
方法處理視圖渲染的數據轉換。 定義了一條路由以訪問此控制器操作。
<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
)來渲染單個活動,通過豐富的活動來查看迭代。 自定義活動部分(例如,用於郵政創建的
<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.php
notification_follow.blade.php
結論:
>流簡化了在Laravel應用中添加魯棒的飼料功能。 該教程演示瞭如何跟踪各種活動,管理不同的飼料類型並在視圖中有效地渲染它們。 鼓勵進一步探索流的功能。
FAQ(稍微重新格式化):>常見問題解答部分寫得很好,並提供了有用的信息。 不需要重大更改,但是較小的格式調整可以提高可讀性。 考慮為更好的視覺組織使用編號列表或粗體鍵術語。
以上是用Laravel和流建立社交網絡?簡單的!的詳細內容。更多資訊請關注PHP中文網其他相關文章!