我想构建类似facebook的东西,我有一个表单,用户可以在其中发布内容,但是我想在不同的部分使用相同的表单,例如:组,页面,个人资料。 我有PostController,它是一种接收发布请求的资源,但是我需要一种区分部分的方式,以便使用正确的section_type和section_id存储数据。
// Post Model Post.php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = ['content', 'user_id']; public function section() { return $this->morphTo(); } public function user() { return $this->belongsTo(User::class); } public function group() { return $this->belongsTo(Group::class); } public function page() { return $this->belongsTo(Page::class); } }
User.php模型
class User extends Authenticatable { public function posts() { return $this->morphMany(Post::class, 'section'); } }
这是PostController和store()函数,此时只有一种情况,即将帖子存储在section_type App \ User中,但是我还需要一种将其存储在App \ Group或App \ Page中的方法
public function store(Request $request) { $this->validate(request(), [ 'content' => 'required|min:5', ]); $user = User::find(Auth::id()); $user->posts()->create([ 'content' => $request->content, 'user_id' => Auth::id() ]); return redirect('/'); }
我需要在PostController.php中做什么? 我以为也许可以在表单中使用带有参数的发帖请求,像这样在组中发帖
<form method="post" action="/?group=1">
或针对页面中的帖子
<form method="post" action="/?page=1">
然后使用$ request-> query()获取部分和ID。您还有其他想法吗?