'Laravel change momentary route url from search to another url
I have a searching bar in my learn project. I include it to the navbar.blade.php and when testing that it becomes that url construction.
localhost:8890/home?_token=7dKh256Me65Wb0rCvlJWkkk1SKdGrpaRPFCHP7MW&_method=GET&search=test
But the controller isn´t calling. I need this url to make it work:
localhost:8890/search?_token=7dKh256Me65Wb0rCvlJWkkk1SKdGrpaRPFCHP7MW&_method=GET&search=test
My route:
Route::get('search', [App\Http\Controllers\ProductController::class, 'search'])->name('search');
ProductController:
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'));
}
Included 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>
Solution 1:[1]
As said by Sharma in the comments before, you shouldn't use 2 form nested. Controller isn“t calling because first form doesn't set action. You can edit it like this:
<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>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | MinhTD |
