在 Laravel 5 中调用函数后重新路由

rerouting after calling a function in Laravel 5

我正在尝试 Laravel 5,我需要一些关于路由的建议。

我 运行 一遍又一遍地陷入一个问题中,我觉得我绝对没有掌握正确的方法。

假设我有一条路线:

Route::post('viewarticles', 'LoginController@user_check_article_list');

这是我登录后被带到的地方。 这条路线向我展示了我可以编辑的文章。在这条路线带你到的页面上,我有一个文章列表和旁边的删除按钮。当我点击删除时,我将它链接到

delete/{{ $article->id }}

然后我有一条路线:

Route::get('delete/{id}', 'ArticleController@deleteArticle');

然后转到这个函数:

public function deleteArticle(Request $request, $id) {

        $article = Article::find($id);
        $article->delete();
        $articles = Article::latest('published_at')->Published()->get();
        return view('admin.article_edit_list',['articles'=>$articles]);

}

最后两行是我重建文章列表然后加载视图。

问题:在我的 url 中,页面仍然是 ../delete/someid

我真的只是需要一种方法来返回路由。

如何发送删除请求?是通过 ajax 吗?

如果是这样,您需要使用 js 在 ajax 调用的成功方法中重定向到您的视图/很可能 jQuery?

      .success(function(){
         location.href = '/your/new/view';
      });

值得检查一下您的变量是否也通过了您的控制器

   public function ...
   echo $id; exit(); // or dd($id);  

并检查您的 collection 已加载 $文章 = ... dd($文章); 重新运行视图(...

另外,如果您进入 app/config/app.php 并设置 debug=true,您应该会得到一个有助于调试问题的错误堆栈。抱歉,我还没来得及打完字就断网了。

不是 return 视图,而是 return 重定向。这将导致 url 更改:

public function deleteArticle(Request $request, $id) 
{
        $article = Article::find($id);
        $article->delete();
        return redirect('/some-url');
}

或者如果使用命名路由:

return redirect()->route('some.route.name');

Source

因此,如果您的 url 停留在 /delete/{id},您需要重定向到显示文章视图

  public function deleteArticle(Request $request, $id) {

    $article = Article::find($id);
    $article->delete();
    return \Redirect::to('show_articles.view');

  }