Laravel Form Post на неправильный маршрут - PullRequest
0 голосов
/ 20 декабря 2018

С моим приложением у меня есть вид заказов с формой поиска, как показано ниже

@include('inc.header')

@yield('content')

<form class="needs-validation" method="post" action="{{url('/wapp/orders/search')}}">
    @csrf
        <div class="input-group mb-3">
                <div class="input-group-prepend">
                  <button class="btn btn-outline-primary" type="submit">Search</button>
                </div>
                <input type="text" class="form-control" placeholder=" Search By Order ID" name="oid">
        </div>
</form><br>

Функция поиска OrderController:

public function search(Request $request)
    {
        $order = DB::table('orders')
                        ->join('users as a','a.uid', '=','orders.sender_uid')
                        ->join('users as b','b.uid', '=','orders.receiver_uid')
                        ->select('orders.oid','orders.price','orders.status','a.name as sender','b.name as receiver')
                        ->where('oid','=' , $request->oid)
                        ->first();

        if($order){
            return view('pages.search')->with('order',$order);
        }else{
            return back()->with('error','Order Not Found');

        }

    }

, которая успешно находит заказ по идентификатору и отображает его результатыс таблицей в представлении поиска.

Я также включил ту же форму поиска в представление поиска в случае, если пользователь хочет найти больше заказов,

@include('inc.header')

@yield('content')


<form class="needs-validation" method="post" action="{{url('/wapp/orders/search')}}">
    @csrf
        <div class="input-group mb-3">
                <div class="input-group-prepend">
                  <button class="btn btn-outline-primary" type="submit">Search</button>
                </div>
                <input type="text" class="form-control" placeholder=" Search By Order ID" name="oid">
        </div>
</form><br>


@if ($order)


        <table class="table">
                <thead class="thead-dark">
                  <tr>
                    <th scope="col">Price</th>
                    <th scope="col">OID</th>
                    <th scope="col">Name</th>
                    <th scope="col">Province</th>
                    <th scope="col">Action</th>
                  </tr>
                </thead>
                <tbody>


                            <tr>
                            <td class="bg-success">{{$order->price}}</td>
                            <td>{{$order->oid}}</td>
                                <td>{{$order->sender}}</td>
                                <td>{{$order->receiver}}</td>
                                <td><a class="btn btn-primary" href="{{url('wapp/orders/'.$order->oid)}}" role="button">Link</a></td>
                            </tr>


                </tbody>
              </table><br>

@endif






@include('inc.footer')

, и это мои маршруты:

Route::group(
    [           
        'namespace' => 'V1',
        'prefix' => 'wapp',
    ], function(){

        Route::get('/', 'LoginController@index');
        Route::post('/', 'LoginController@login');
        Route::get('/orders', 'OrderController@index');
        Route::post('/orders/search', 'OrderController@search');
        Route::get('/orders/{oid}', 'OrderController@show');

        Route::patch('/orders/{oid}', 'OrderController@update');
        Route::get('/region','RegionController@index');


});

Моя проблема возникает, когда пользователь вводит неправильный идентификатор заказа или просто нажимает кнопку поиска, приложение перенаправляет на OrderController @ show, который является маршрутом кнопки сведений о заказе в таблице ?? !!почему это происходит

Примечание: если пользователь предоставит действительный идентификатор заказа, все будет хорошо!

Любые идеи будут высоко оценены

1 Ответ

0 голосов
/ 20 декабря 2018

Если вы изменяете URL своего браузера и затем нажимаете ввод, он перенаправляет вас на страницу сведений о заказе, потому что это запрос get и запрос GET, вы возвращаете детали заказа, а метод поиска определяется методом POST, который долженработает только тогда, когда сделан запрос POST, который вы можете сделать, только отправив форму.

Кроме того, если вы все делаете правильно, то выполнение следующей команды поможет.

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