Laravel使用Request对象重定向到控制器动作

时间:2018-10-11 13:52:22

标签: php ajax laravel redirect

在Laravel 5.6应用程序中,我有一个控制器来管理产品树。 getTree()方法从数据库构建树,updateTree()对其进行修改。这两种方法都是通过接受请求参数的ajax调用的:

刀片:

$.get("{{ URL::to('api/gettree') }}", {
  data: $("#data").val()
  }, function(response) { ... });

$.post("{{ URL::to('api/updatetree') }}", {
  data: $("#data").val()
  }, function(response) { ... });

路线:

Route::get("/gettree", "TreeController@getTree");
Route::post("/updatetree", "TreeController@updateTree");

控制器:

class TreeController extends Controller
{
  public function updateTree(Request $request)
  {
    ... process $request->input() ...
    return redirect()->action("TreeController@getTree");
  }

  public function getTree(Request $request)
  {
    ...
    return view("admin.partials.itemtree", compact("data"));
  }
...
}

我想要实现的是在updateTree()运行后通过重定向到控制器操作来触发getTree()方法,但是这种方式我无法传递getTree()期望的Request对象。您将如何处理?预先感谢!

1 个答案:

答案 0 :(得分:2)

如果您检出action方法的signature,则第二个参数是参数。

因此您可以像这样传递参数:

return redirect()->action("TreeController@getTree", [$request]);

或者,您可以从Request $request方法中删除getTree参数,而只使用$request = request()