我在Laravel 5.5中创建了一个非常简单的Web应用程序:
有一个数据库,其中包含未兑换或已兑换的优惠券代码列表。 0未兑换且1已兑换。
当有人将字符串输入到HTML表单输入并提交时,Laravel会转到该字符串作为变量的路径。
Controller代码如下:
public function redeemCoupon ($coupon_code)
{
$coupon = Coupon::where('coupon_code', $coupon_code)->first();
if ($coupon === null) {
return view ('pages.no-coupon');
}
else if ($coupon->redeemed == 1) {
return view ('pages.used-coupon');
}
else {
$coupon->redeemed = 1;
$coupon->update();
return view('pages.redeemed-coupon', compact('coupon') );
}
}
路线:
Route::post('/redeem-coupon/{coupon_code}', 'CouponController@redeemCoupon');
你可以在这里试试: http://178.62.4.225
正常完成后,一切正常,在代码" code01"上进行测试。当我输入它并且它没有被兑换时,它会这样说,并且兑换它会将数据库中的列从0更改为1.如果我再次尝试该过程,它会告诉我它已经被兑换。
问题是当我在页面上告诉我它已被兑换: http://178.62.4.225/redeem-coupon/code01
如果我用CTRL + R刷新它,它只是重新加载并说它已经被兑换了。但是,如果我将URL粘贴到新选项卡中或单击其中并通过单击Enter进行刷新,则会显示" MethodNotAllowedHttpException"从我所知道的,生成的调试屏幕没有任何用处。
帮助!
答案 0 :(得分:1)
更改
Route::post('/redeem-coupon/{coupon_code}', 'CouponController@redeemCoupon');
到
Route::any('/redeem-coupon/{coupon_code}', 'CouponController@redeemCoupon');
诀窍
答案 1 :(得分:0)
您正在执行GET请求并定义路径更改后
Consultant
为:
Route::post('/redeem-coupon/{coupon_code}', 'CouponController@redeemCoupon');
答案 2 :(得分:0)
兑换设置为受保护?同时显示app_debug true将显示所有数据库连接信息(用户和通行证)
很可能是因为_method。
_method =“POST”是什么页面?