【发布时间】:2021-12-17 17:55:38
【问题描述】:
我需要您的帮助,我该如何为我的 laravel crud 系统创建搜索功能? 我想做一个搜索功能,管理员可以搜索用户名,它就像一个过滤器,搜索后只显示与搜索相同的用户。
admin.users.index(刀片文件):
<div class="col-md-4">
<form action="/search" method="GET">
<div class="input-group">
<input type="search" name="search" class="form-control">
<span class="input-group-btn">
<button type="submit" class="btn btn-primary">Keresés</button>
</span>
</div>
</form>
</div>
<div class="card">
<table class="table">
<thead>
<tr>
<th scope="col">Profilkép</th>
<th scope="col">Név</th>
<th scope="col">Email</th>
<th scope="col">Telefonszám</th>
<th scope="col">Műveletek</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<th scope="row"><img src="/uploads/avatars/{{ $user->avatar }}" style=" width:32x; height:32px; float:left; border-radius:50%; margin-right:25px;"></th>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>{{ $user->phone }}</td>
<td>
<a class="btn btn-sm btn-primary" href=" {{ route('admin.users.edit', $user->id) }}" role="button">Szerkesztés</a>
<button type="button" class="btn btn-sm btn-danger" onclick="event.preventDefault(); document.getElementById('delete-user-form-{{ $user->id }}').submit()">
Törlés
</button>
<form id="delete-user-form-{{ $user->id }}" action="{{ route('admin.users.destroy', $user->id) }}" method="POST" style="display: none;">
@csrf
@method("DELETE")
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
{{ $users->links() }}
</div>
UserController 搜索功能:
public function index(Request $request)
{
if(Gate::denies('logged-in')){
dd('no acces');
}
if(Gate::allows('is-admin')){
return view('admin.users.index', ['users' => User::paginate(10)]);
}
dd("adminnak kell lenned");
$users = User::paginate(10);
return view('admin.users.index')
->with([
'users' => $users
]);
}
public function search(Request $request) {
$search = $request->get('search');
$users = User::table('users')->where('name', 'like', '%'.$search.'%')->paginate(10);
return view('admin', ['users' => $users]);
}
我在 web.php 中没有路由,因为我不知道如何解决这个问题。 :( 请帮我! 谢谢你的回复!
【问题讨论】:
-
添加路线:阅读文档,很简单。但你不需要。您可以使用带有查询参数“搜索”的索引操作
-
你能帮我在代码中实现这个吗?
-
我不会为您编写代码,但会帮助您入门:将表单操作更改为索引路由,使用
$request->query('search')读取查询参数。现在您只需使用 where like 语句(在您的索引操作中)在查询参数上创建一个 if 语句
标签: laravel search filter routes crud