我有一条路由,支持PUT。
Route::put('/products/{id}/cancel/', 'ProductController@cancel')->where('id', '[0-9]+');
当控制器更新产品状态后 应该重定向到另一个路由上。
return redirect('products')->with('success', 'Produto cancelado');
它应该重定向到另一条路由,指向
Route::get('/products', 'ProductController@list')->name('products');
一切都在工作,直到重定向.产品更新,但重定向给出了一个方法不支持的错误。
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
The PUT method is not supported for this route. Supported methods: GET, HEAD
我还尝试了以下重定向。
return redirect('/products/')->with('success', 'Produto cancelado');
和
return redirect()->route('products')->with('success', 'Produto cancelado');
PUT方法是如何传递的?重定向中要不要明确调用GET方法?
我应该如何解决这个问题?
EDIT:我是从HTTPrequest发送PUT的。所以我返回的是JS函数。我想转发到一个接受with->的视图。
EDIT2:我可以返回一个视图,但它只出现在开发者工具的网络>预览中。
return view('pages.products')->with('success', 'Produto cancelado');
但我显然需要它在窗口中。
我可以在 js 中重定向,但这样一来,我就会错过在部分刀片中显示 flash 消息。
我不知道该怎么做。
我不知道该怎么做。
错误不在GET方法,错误说不支持put方法。
Route::put('/products/{id}/cancel/', 'ProductController@cancel')->where('id', '[0-9]+');
如果你尝试这样做 domainname.com/products/5/cancel
那么就定义为下面这个样子。
Route::get('products/{id}/cancel', 'ProductController@cancel')->where('id', '[0-9]+');
最后我做了一些作弊。
我添加了一个新的PUT路由
Route::put('/products', 'ProductController@list')->name('products_put');
控制器返回,
return redirect()->route('products')->with('success', 'Produto cancelado',200);
然后由response处理程序进行作弊。
document.write(this.responseText);
window.history.pushState('products', 'eBaw · online shopping', '/products');