phpmyadmin 无法在laravel中实现搜索功能

lvmkulzt  于 4个月前  发布在  PHP
关注(0)|答案(1)|浏览(51)

我有一个网上商店的应用程序,从主页上,你可以点击一个输入字段,按查找,它应该显示你的订单列表,有根据搜索查询。当我按查找它给我一个404没有找到错误。这里是主页查找

<form action="{{ route('order.search') }}" method="GET">
                <input type="text" name="search" class="search-input" placeholder="Search Orders" required>
                <button type="submit" class="search-button">Find</button>
                </form>

                </div>

字符串
下面是orderController搜索函数

public function search(Request $request)
    {
        // echo "Search method invoked"; 

        $searchQuery = $request->input('search');
        $orders = Order::where('name', 'like', '%' . $searchQuery . '%')->get();
        return view('order.search_results', compact('searchQuery', 'orders'));
    }


这里是web.php路由

Route::get('/order/search', [OrderController::class, 'search'])->name('order.search');


这里是订单页面,你应该得到后,你搜索一个订单

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Search Results for "{{ $searchQuery }}"</div>

                <div class="card-body">
                    @if($orders->isEmpty())
                        <p>No matching orders found.</p>
                    @else
                        <ul>
                            @foreach($orders as $order)
                                <li>{{ $order->id }}</li>
                                <li>{{ $order->name }}</li>
                            @endforeach
                        </ul>
                    @endif
                </div>
            </div>
        </div>
    </div>
</div>
@endsection


当我搜索一个Pizza时,它会把我带到一个URL/order/search?search=Pizza,也许路由有问题,但在orderController中,我相信函数会解决这个问题。

von4xj4u

von4xj4u1#

你的逻辑是错误的,你正在为一个GET请求做一个路由,但是你试图访问应该用POST完成的输入。Laravel正在将你的搜索输入作为一个url参数添加。
或者像这样更改为POST:

Route::post('/order/search', [OrderController::class, 'search'])->name('order.search');

字符串
或将参数添加到路由中

Route::get('/order/search/{query}', [OrderController::class, 'search'])->name('order.search');

相关问题