为 POST 视图返回 Redirect::back Laravel
Posted
技术标签:
【中文标题】为 POST 视图返回 Redirect::back Laravel【英文标题】:Return Redirect::back for a POST View Laravel 【发布时间】:2016-03-02 07:23:21 【问题描述】:我是 Laravel 的新手!!
当从我的控制器使用 return redirect::back() 到 POST 视图时,我在 Laravel 4.2 中遇到错误。
错误: Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
我的路线:
Route::post("productos_categoria", array(
"as"=>"productosCategoria",
"uses"=>"ProductosController@mostrarPorCategoria"
));
我的功能控制器:
public function sumarVoto()
$correoUsuario = Session::get('correoUsuario');
$id_producto = Input::get('idProducto');
$existeVoto = DB::table('voto_usuarios')
->where('CORREO', '=', $correoUsuario)
->where('ID_PRODUCTO', '=', $id_producto)
->count();
if($existeVoto > 0)
Session::flash($id_producto, '¡Usted ya realizó el voto con anterioridad para este producto!');
return Redirect::back();
DB::table('voto_usuarios')->insert(array('CORREO' => $correoUsuario, 'ID_PRODUCTO' => $id_producto));
DB::table('productos')->where('productos.ID_PRODUCTO', '=', $id_producto)->increment('VOTO');
Session::flash($id_producto, '¡Voto ingresado con éxito!');
return Redirect::back();
Redirect::back() 仅用于 GET 视图或 GET 路由??
如何使用 post 方法从我的控制器返回以前的视图??
【问题讨论】:
尝试使用return redirect()->back();
我尝试但失败错误:调用未定义函数重定向()
这取决于请求的来源。如果您当前放置表单的 url 应该使用 GET 方法。那么您可以从发布请求重定向回 GET url。否则会抛出错误。
【参考方案1】:
一般你不能重定向到 POST
方法原因是
Laravel 的 Redirect 使用 HTTP 响应重定向方法。 HTTP 中没有使用 POST 的重定向方法,因此在 Laravel 中不存在。
但是通过在不同的地方进行一些搜索,我找到了一个可以遵循的解决方案
步骤如下:
扩展 Redirector 类以记录有关预期请求的附加信息。
创建一个新的服务提供者,它会覆盖 IOC 容器中的“重定向”。
创建一个新的服务提供者,它将在重定向后设置预期的方法和输入。
最后将新的服务提供者添加到 app/config/app.php 中的 providers 数组中
有关详细代码和想法,请点击 Laravel.io 上的以下链接
http://laravel.io/forum/04-23-2014-redirectintended-with-routepost
【讨论】:
以上是关于为 POST 视图返回 Redirect::back Laravel的主要内容,如果未能解决你的问题,请参考以下文章
php 此函数返回posttype的post count视图
Ajax POST 返回 Bootstrap 面板主体内的完整部分视图
混合 Jquery Ajax Post 到 ActionResult,我还能返回一个新视图吗?
RESTFUL风格 put 报错 HTTP Status 405 - JSPs only permit GET POST or HEAD