Laravel: Как использовать одну и ту же форму сообщения для нескольких разделов - PullRequest
0 голосов
/ 04 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...