更新后的Laravel重定向
我在名为AssetController的控制器中有一个更新操作 在操作结束时,我执行更新后的Laravel重定向,laravel,laravel-5,routes,Laravel,Laravel 5,Routes,我在名为AssetController的控制器中有一个更新操作 在操作结束时,我执行return\Redirect::route('asset.edit',array($id)) 在我的路由中,我有Route::resource('asset','AssetController') 当我发布到更新操作时,它会将我带到“/asset/8”(8是该资产记录的id)。我希望它转到“/asset/8/edit”--换句话说,就是将用户返回到他们刚刚提交更新的编辑表单 我还尝试了return\Redire
return\Redirect::route('asset.edit',array($id))代码>
在我的路由中,我有Route::resource('asset','AssetController')代码>
当我发布到更新操作时,它会将我带到“/asset/8”(8是该资产记录的id)。我希望它转到“/asset/8/edit”--换句话说,就是将用户返回到他们刚刚提交更新的编辑表单
我还尝试了return\Redirect::back()
,但这也会发送到“/asset/8”--甚至认为他们刚刚提交的页面的URL是“/asset/8/edit”
为什么这不起作用?您需要传递一个密钥
return \Redirect::route('asset.edit', array('id' => $id));
我发现了这个问题。我的返回在DB::transaction()中,因此它忽略了它
我的原始return语句在我将其放在DB::transaction()函数之外后就可以正常工作。像这样注册您的tout:
Route::resource('asset', 'AssetController', ['names' => [ 'edit' => 'asset.edit ]]);
然后使用重定向:
\Redirect::route('asset.edit', array($id));
不要忘记添加元素输入:
非常简单。只需使用这行代码:
return redirect(route('asset.edit', array('id' => $id)));
你应该使用
return redirect("asset/".$id);
或
或
谢谢,我希望你是对的,但这不会改变任何事情。Laravel将传递的单个参数解释为id(我尝试了您的建议只是为了确定,但没有成功)。这不是必需的——它与我的代码中的一样工作正常。我的错误是重定向发生在db:transaction()函数中。一旦我把它放在函数外,它就可以在没有任何代码更改的情况下工作。这是没有必要的。同样,一旦我从DB:transaction()中删除了return语句,它就按预期工作了。
return redirect()->route('asset.edit', compact('id'));
return redirect()->route('asset.edit', ['id' => $id]);