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

Mal*_*lio 3 php ajax redirect laravel

在 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) { ... });
Run Code Online (Sandbox Code Playgroud)

路线:

Route::get("/gettree", "TreeController@getTree");
Route::post("/updatetree", "TreeController@updateTree");
Run Code Online (Sandbox Code Playgroud)

控制器:

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"));
  }
...
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的是在 updateTree() 运行后通过重定向到控制器操作来触发 getTree() 方法,但是这样我就无法传递 getTree() 预期的请求对象。你会怎么做?先谢谢了!

Par*_*ras 5

如果检查出签名的的action方法,第二个参数是参数。

所以你可以像这样传递参数:

return redirect()->action("TreeController@getTree", [$request]);
Run Code Online (Sandbox Code Playgroud)

或者,您可以Request $requestgetTree方法中删除参数并使用类似的东西$request = request()

  • 但是,如果要将数组作为参数传递,则应省略调用中的 [],否则会出现错误异常“数组到字符串的转换”。 (2认同)