首页 >后端开发 >php教程 >用Laravel和流建立社交网络?简单的!

用Laravel和流建立社交网络?简单的!

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌原创
2025-02-10 08:59:08815浏览

>本文基于上一篇有关使用流中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