>本文基于上一篇有关使用流中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中文网其他相关文章!