Laravel GET路由错误MethodNotAllowedHttpException

时间:2017-11-27 13:23:18

标签: php laravel-5

我在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"从我所知道的,生成的调试屏幕没有任何用处。

帮助!

3 个答案:

答案 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”是什么页面?