首页 > 解决方案 > 更新控制器方法不在 Laravel 中呈现 json 数据

问题描述

我有一个简单的表单,其中包含一些文本输入并使用该表单上传照片。存储方法工作得很好,但我在更新方法中做错了。

这是我的商店方法,效果很好:

public function store(Request $request)
{
    dd($request);
    $post = new Post;
    $post->title = $request->title;
    $post->user_id = $request->user()->id;
    $post->who = $request->who;
    $post->when = $request->when;
    $post->where = $request->where;
    $post->body_text = $request->body;
    $post->embed = $request->embed;
    $post->status = "4";
    $post->tags = $request->tags;
    $post->slug = "asdasd";
    $post->ip = request()->ip();


    if($request->hasfile('photo'))
    {
        foreach($request->file('photo') as $image)
        {
            $name= time()."".$this->photo_san($image->getClientOriginalName());
            $image->move(public_path().'/uploads/', $name);
            $data[] = $name;
        }
        $post->photo = json_encode($data);
    }

    $post->save();

    $post->slug = $post->id."-".$this->make_slug($request->title);
    $post->save();
    Session::flash('success', 'Well done.');
    return redirect()->route('archive');

}

这是我的更新方法,它可以保存除照片以外的所有内容:

  public function update(Request $request, $id)
{
    if(Auth::user()->role == 3 || Auth::user()->id == Post::find($id)->user_id){
        $post = Post::find($id);
        $post->title = $request->title;
        $post->user_id = $request->user()->id;
        $post->who = $request->who;
        $post->when = $request->when;
        $post->where = $request->where;
        $post->body_text = $request->body;
        $post->embed = $request->embed;
        $post->status = "4";
        $post->tags = $request->tags;
        $post->slug = $id."-".$this->make_slug($request->title);
        $post->ip = request()->ip();

        if($request->hasFile('photo'))
        {
            foreach($request->file('photo') as $image)
            {
                $name= time()."-edit-".$this->photo_san($image->getClientOriginalName());
                $image->move(public_path().'/uploads/', $name);
                $data[] = $name;
            }
            $post->photo = json_encode($data);
        }

        $post->save();

        Session::flash('success', 'Well done.');
        return redirect()->route('new');
    }
    else
        Session::flash('error', 'Shame on you :( ');
        return redirect()->route('new');
}

当我更新任何帖子时,所有内容都在更新,但照片除外,我不知道出了什么问题。我不知道它是否不同,但我使用的是 Laravel 5,8

标签: formscontrollerlaravel-5.8

解决方案


推荐阅读