首页 > 解决方案 > Laravel:如何为多个部分使用相同的帖子表单

问题描述

我想构建类似 facebook 的东西,并且我有一个表单,用户可以在其中发布内容,但我想在不同的部分使用相同的表单,例如:组、页面、个人资料。我有 PostController,它是一种接收发布请求的资源,但我需要一种方法来区分部分,以便使用正确的 section_type 和 section_id 存储数据。

// 发布模型 Post.php

命名空间应用程序;

使用 Illuminate\Database\Eloquent\Model;

类 Post 扩展模型
{

    受保护的 $fillable = ['content', 'user_id'];

    公共功能部分()
    {
        返回 $this->morphTo();
    }

    公共功能用户()
    {
        返回 $this->belongsTo(User::class);
    }

    公共功能组()
    {
        返回 $this->belongsTo(Group::class);
    }

    公共功能页面()
    {
        返回 $this->belongsTo(Page::class);
    }
}

User.php 模型

类用户扩展 Authenticatable
{

    公共职能职位()
    {
        return $this->morphMany(Post::class, 'section');
    }
}

这是 PostController 和 store() 函数,此时我只有一种情况,帖子存储在 section_type App\User 中,但我还需要一种方法将其存储在 App\Group 或 App\Page 中。

    公共功能存储(请求 $request)
    {

        $this->validate(request(),
            [
                '内容' => '必需|分钟:5',
            ]);

        $user = User::find(Auth::id());

        $user->posts()->create([
            '内容' => $request->内容,
            'user_id' => 验证::id()
        ]);

        返回重定向('/');
    }

我需要在 PostController.php 中做什么?我想也许我可以在表单中使用带有参数的发布请求,例如在群组中发布

<form method="post" action="/?group=1">

或者这个用于页面中的帖子

<form method="post" action="/?page=1">

之后使用 $request->query() 获取部分和 ID。你有其他想法吗?

标签: laravel

解决方案


推荐阅读