PHP маршрутизация: метод GET не поддерживается для этого маршрута. Поддерживаемые методы: POST - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть форма HTML, определенная следующим образом:

<form action="{{route('save.checkout')}}" method="POST">
  {{csrf_field()}}
  <input name="amount" type="hidden" value="{{session()->get('cart')->totalprice}}">
  <div class="cart_navigation">
    <a class="continue-btn" href="#">
      <i class="fa fa-arrow-left"> </i>&nbsp; خرید را ادامه دهید
    </a> 
    <a class="checkout-btn" href="{{route('save.checkout')}}">
      <i class="fa fa-check"></i> ادامه به  پرداخت
    </a>
  </div>
</form>

При отправке формы выдается следующая ошибка:

The GET method is not supported for this route. Supported methods: POST.

Мой маршрут:

route::post('/savecheckout','BasketController@checkout')->name('save.checkout');

и функция проверки:

public function checkout(Request $request){
  $user = auth()->user()->id;
  $order = new order();
  $order->user_id = $user;
  $order->amount = $request->input('amount');
  $order->status = 0;
  $order->save();
  $order = order::where('status' ,0)->where('user_id', $user)->first();
  return view('checkout.index', compact('order'));
}

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

, если вы начинаете с Laravel, поэтому я хотел бы внести что-то, чтобы сделать ваше программирование лучше и безопаснее для будущих проектов.

  • всегда проверяйте ваш ввод
  • использование блоки try & catch
  • показывают пользователям соответствующее сообщение об ошибке, чтобы вы могли отладить его в будущем.

, поэтому модифицированный код будет выглядеть так:

public function checkout(Request $request){
    // use Validator; (add this after namespace to import validator)
    $validator = Validator::make($request->all(),[
        'user_id' => 'required|integer|max:11',
        'amount' => 'required|numeric',
        'status' => 'sometimes|integer|max:1',
    ]);

    if($validator->fails()) {
        return back()->withErrors($validator);
    }
    try {
        $user = auth()->user()->id;
        $order = new order();
        $order->user_id = $user;
        $order->amount = $request->input('amount');
        $order->status = 0;
        $order->save();
        $request->session()->flash('message', 'Order Successfully Created');
        $order = order::where('status' ,0)->where('user_id', $user)->first();
        return view('checkout.index', compact('order'));
    } catch (\Exception $e){
        dd($e->getMessage()); // it will show the error message with, you can replace this block with redirect code or anything else..
    }
}

для отображения сообщения об ошибке и успехе во внешнем интерфейсе, используйте приведенный ниже код в шаблоне checkout> index.blade. php (просто пример кода, вы можете улучшить его, используя собственные стили CSS & & )

@if(session()->has('message'))
    <div class="alert alert-success">
        {{ session()->get('message') }}
    </div>
@endif
@if(count($errors) > 0)
    <div class="note note-error">
        <h4>Error..!!</h4>
        <p>
            @foreach($errors->all() as $error)
                <div class="alert alert-danger fade in m-b-15">
                <i class="fa fa-chevron-right"></i>
                {{ $error }}
                <span class="close" data-dismiss="alert">&times;</span></div>
            @endforeach
        </p>
    </div>
@endif
0 голосов
/ 11 февраля 2020

я решил проблему. это была глупая ошибка, я изменил свой тип кнопки, чтобы отправить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...