Ich habe einen sehr einfachen Web-App in Laravel erstellt 5.5:Laravel Route plane Fehler MethodNotAllowedHttpException
Es gibt eine Datenbank mit einer Liste von Gutscheincodes, die entweder nicht eingelöst worden oder zurückgenommen worden ist. 0 wird nicht eingelöst und 1 wird eingelöst.
Wenn jemand einen String in eine HTML-Formulareingabe eingibt und ihn abgibt, geht Laravel zu einer Route mit dieser Zeichenfolge als Variable.
Der Controller-Code lautet wie folgt:
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:
Route::post('/redeem-coupon/{coupon_code}', '[email protected]');
Sie können es hier ausprobieren: http://178.62.4.225
Alles funktioniert gut, wenn normalerweise getan, auf die getestet Code "Code01". Wenn ich es eingebe und es nicht eingelöst wurde, sagt es das, und wenn ich es einlöse, wird die Spalte in der Datenbank von 0 auf 1 geändert. Wenn ich den Prozess erneut versuche, sagt er mir, dass er bereits eingelöst wurde.
Das Problem ist, wenn ich auf der Seite bin, das mir sagt es eingelöst worden ist: http://178.62.4.225/redeem-coupon/code01
Wenn ich es mit STRG + R zu aktualisieren, es lädt nur und sagt, dass es bereits eingelöst. Aber wenn ich die URL in eine neue Registerkarte einfüge oder hineinklicke und durch einen Klick auf Enter aktualisiere, gibt es "MethodNotAllowedHttpException" und der resultierende Debug-Bildschirm, von dem, was ich sagen kann, bietet nichts von Nutzen.
Hilfe!
Dies gibt immer noch den gleichen Fehler. Aber ich sehe nicht, wie das funktionieren würde, da es eine Postanforderung sein muss, wenn der Code nicht eingelöst wurde, um die DB-Spalte von einer 0 zu einer 1 zu ändern? –
@RuairiMcNicholas Also solltest du die Seite laden und dann den Couponstatus per Postanfrage über AJAX überprüfen – Michael