重新加载页面后,数据将再次添加到数据库中

时间:2017-09-20 13:13:39

标签: php laravel

每当我被定向到广告页面然后重新加载相同的数据再次输入数据库。在保留那些紧凑变量的同时还有其他重定向页面吗?

Controller.php这样

  public function StorePost(Request $request)

 {

    $formInput = $request->except('image');

    $this->validate($request, [
        'title' => 'required',
        'name' => 'required',
        'email' => 'required|email',
        'contact' => 'required',
        'model' => 'required',
        'city' => 'required',
        'description' => 'required',
        'image'=>'image|mimes:png,jpg,jpeg|max:10000'
    ]);  


    $image = $request->image;

    if($image){

        $imageName = $image->getClientOriginalName();
        $image->move('images',$imageName);
        $formInput['image'] = $imageName;
    }


    Post::create($formInput); 

    $posts = Post::all();  

    return view('ad.ad',compact('name','posts'));


}}

3 个答案:

答案 0 :(得分:0)

您可能只想将(redirect('/ad_url'))重定向到“广告”路线/页面。可以说,也许'ControllerForAddPage'是显示你的'广告'视图的,只是取而代之的是获取该控制器中的所有帖子,而不是处理器来处理保存数据。

答案 1 :(得分:0)

我认为在商店和节目之间使用不同的路线会更好。你只需要在商店成功后重定向到索引路线。例如:

...

Post::create($formInput); 

return redirect()->route('ad.index');

答案 2 :(得分:0)

您应该重定向到其他位置以避免这种情况。如果数据成功存储,则将其重定向到帖子列表URL,否则再次将其重定向到同一位置,并显示错误消息。

示例代码如下:

public function StorePost(Request $request) {

        $formInput = $request->except('image');

        $this->validate($request, [
            'title' => 'required',
            'name' => 'required',
            'email' => 'required|email',
            'contact' => 'required',
            'model' => 'required',
            'city' => 'required',
            'description' => 'required',
            'image' => 'image|mimes:png,jpg,jpeg|max:10000'
        ]);

        $image = $request->image;

        if ($image) {
            $imageName = $image->getClientOriginalName();
            $image->move('images', $imageName);
            $formInput['image'] = $imageName;
        }


        $store = Post::create($formInput);

        if($store){
            //return to posts list view 
             return redirect('posts')->with('success', 'Post successfully stored.');
        }
        //redirect to the form to create post
        return redirect()->back()->with('failed', 'Failed to store the post!');

    }