【问题标题】:Laravel change momentary route url from search to another urlLaravel 将瞬时路由 url 从搜索更改为另一个 url
【发布时间】:2022-01-26 09:14:38
【问题描述】:

我的学习项目中有一个搜索栏。我将它包含在 navbar.blade.php 中,并在测试时将其变为该 url 构造。

localhost:8890/home?_token=7dKh256Me65Wb0rCvlJWkkk1SKdGrpaRPFCHP7MW&_method=GET&search=test

但是控制器没有调用。我需要这个 url 才能使它工作:

localhost:8890/search?_token=7dKh256Me65Wb0rCvlJWkkk1SKdGrpaRPFCHP7MW&_method=GET&search=test

我的路线:

Route::get('search', [App\Http\Controllers\ProductController::class, 'search'])->name('search');

产品控制器:

public function search(Request $request)
{
    //Get the search vale from the request
    $search = $request->input('search');

    $products = Product::query()
            ->where('ean', 'LIKE', "%{$search}%")
            ->orWhere('manufacturer', 'LIKE', "%{$search}%")
            ->orWhere('name', 'LIKE', "%{$search}%")
            ->orWhere('productNumber', 'LIKE', "%{$search}%")
            ->orWhere('propertie', 'LIKE', "%{$search}%")
            ->get();

    return view('products.search',compact('products'));
}

包含 navbar-search.blade.php

<!-- Right navbar links -->
<ul class="navbar-nav ml-auto">
    <!-- Navbar Search -->
    <li class="nav-item">
        <a class="nav-link" data-widget="navbar-search" role="button">
            <i class="fas fa-search"></i>
        </a>
        <div class="navbar-search-block">
            <form class="form-inline">
                @csrf
                <div class="input-group input-group-sm">
                    <input type="text" name="search" class="form-control form-control-navbar" placeholder="Search" required>
                    <div class="input-group-append">
                        <form action="{{route('search')}}" method="GET">
                            @csrf
                            @method('GET')
                            <button class="btn btn-navbar" type="submit">
                                <i class="fas fa-search"></i>
                            </button>
                        </form>
                        <button class="btn btn-navbar" type="button" data-widget="navbar-search">
                            <i class="fas fa-times"></i>
                        </button>
                    </div>
                </div>
            </form>
        </div>
    </li>
</ul>

【问题讨论】:

  • GET 方法不需要 CSRF。所以...您不需要添加@csrf@method('GET')

标签: php laravel routes


【解决方案1】:

正如 Sharma 之前在 cmets 中所说,您不应该使用嵌套的 2 形式。控制器没有调用,因为第一个表单没有设置操作。你可以这样编辑它:

<ul class="navbar-nav ml-auto">
    <!-- Navbar Search -->
    <li class="nav-item">
        <a class="nav-link" data-widget="navbar-search" role="button">
            <i class="fas fa-search"></i>
        </a>
        <div class="navbar-search-block">
            <form class="form-inline" action="{{route('search')}}" method="GET">
                <div class="input-group input-group-sm">
                    <input type="text" name="search" class="form-control form-control-navbar" placeholder="Search" required>
                    <div class="input-group-append">
                        <button class="btn btn-navbar" type="submit">
                            <i class="fas fa-search"></i>
                        </button>
                        <button class="btn btn-navbar" type="button" data-widget="navbar-search">
                            <i class="fas fa-times"></i>
                        </button>
                    </div>
                </div>
            </form>
        </div>
    </li>
</ul>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2020-08-25
    相关资源
    最近更新 更多