Я хочу создать что-то вроде 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 (), чтобы получить раздел и идентификатор. У вас есть другие идеи?