私のアプリケーションには、adminと前者の2つのユーザーロールがあります。
管理者はいくつかのフォーマーを作成できます...
もし、私はID 1で私を接続しますか?前者の情報を検索します。
だから、私の関数index()はユーザーのIDを取得することができます
public function index()
{
if($has_role = auth()->user()->hasRole('admin')){
$formers = Former::first()->paginate(5);
return view('admin.formers.index', compact('formers'));
} else{
$formers = Former::where('email', Auth::user()->email)->paginate(5);
return view('admin.formers.index', compact('formers'));
}
}
さて、ユーザー管理者のために、検索バーを作成したいと思います...
関数index()の前に作成し、機能しました
public function index(Request $req)
{
if ($req->search == "") {
$formers = Former::paginate(5);
return view('admin.formers.index', compact('formers'));
} else {
$validated = $req->validate([
'search' => 'alpha',
]);
$formers = Former::where('nom', 'LIKE', '%' . $validated['search'] . '%')->paginate(5);
$formers->appends($req->only('search'));
return view('admin.formers.index', compact('formers'));
}
}
さて、2つのアクションを関数に適応させたいのですが、それは可能ですか?
同じ関数でuser_idを取得して検索バーを作成できると思いますか?
ありがとうございました
私がすることは次のとおりです。
基本的に、これは次の方法で実現できます。
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
public function index(Request $request)
{
$user = $request->user();
$formers = Former::query()
->when($user->hasRole('admin') !== true, function (Builder $query) use ($user) {
$query->where('email', $user->email);
})
->when($request->has('s'), function (Builder $query) use ($request) {
$query->where('nom', 'like', '%'.$request->input('s').'%');
})
->paginate(5);
return view('admin.formers.index', compact('formers'))
->with('display_search', $user->hasRole('admin'));
}
次に、ビューで$display_search
変数を使用して、検索を表示するかどうかを決定できます。
@if($display_search)
<form method="post" action="...">
<input type="text" name="s" placeholder="Type to search...">
</form>
@endif
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加