laravel5.8 검색 기능
화면
상품명 : 모호한 검색
제품 카테고리 : 풀다운 검색
입력 유지 : 검색된 값이 남습니다.
구현
▪️View
views/product/search.blade.php <form class="search" enctype="multipart/form-data" action="{{route('product.index')}}" accept-charset="UTF-8" method="get">
@csrf
<div class="row">
<div class="input-group mt-4 col-md-7 offset-2">
<h2 class="mr-4">商品名</h2>
<input type="text" name="product_name" class="form-control" value="{{isset($product_name) ? $product_name : "" }}">
<span class="input-group-btn">
<input type="submit" class="btn btn-primary ml-4" value="検索">
</span>
</div>
</div>
<div class="row">
<div class="input-group mt-4 col-md-7 offset-2">
<h2>商品カテゴリ</h2>
<select id="category_id" name="category_id" class="form-control">
@foreach(config('categories') as $id => $category)
<option name="category_id" value="{{$id}}" @if ($id === $category_id_int) {{$id}} selected @endif>{{$category}}</option>
@endforeach
</select>
</div>
</div>
</form>
@foreach (config('categories') as $id => $category)
선택 상자의 값은 config/categories.php에 배열을 가져옵니다.
입력 유지
· 텍스트 상자
value="{{isset($product_name) ? $product_name : ""}}"
・셀렉트 박스
value="{{$id}}"@if ($id === $category_id_int) {{$id}} selected @endif >
왠지 old 함수를 사용할 수 없었기 때문에 이번 방법으로 입력 유지했습니다.
이것이 정답인지 확실하지 않지만 도움이 될 수 있다고 생각합니다.
이미지로서는
값을 컨트롤러에 보내고 보낸 값을 다시 표시시키고 있는 이미지입니다.
routes/web.php<?php
return array(
'0'=>'未選択',
'1'=>'肉類',
'2'=>'魚介類',
'3'=>'果物類',
'4'=>'野菜類',
'5'=>'飲み物類',
'6'=>'漬物類',
'7'=>'菓子類',
);
▪️Controller
Controller/ProductsController.php
/**
* 商品検索
* @return $datas
*/
public function index(Request $request)
{
$query = Product::query();
$product_name = $request->product_name;
$category_id = $request->category_id;
//商品名の値が存在&商品名の値が空ではなかった場合
if ($request->has('product_name') && $product_name !== '') {
$query->where('product_name', 'like', '%' . $product_name . '%')->get();
}
//カテゴリーの値が存在&カテゴリーの値が0ではなかった場合
if ($request->has('category_id') && $category_id !== '0') {
$query->where('category_id', $category_id)->get();
}
$datas = $query->paginate(15);
//型変換
$category_id_int = intval($category_id);
return view('product.search', ['datas' => $datas, 'product_name' => $product_name, 'category_id_int' => $category_id_int]);
}
▪️route
routes/web.phpRoute::prefix('products')->group(function () {
Route::get('/', 'ProductsController@index')->name('product.index');
});
Reference
이 문제에 관하여(laravel5.8 검색 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/freelanceradiation/items/9008771e0425c8aca481
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
▪️View
views/product/search.blade.php
<form class="search" enctype="multipart/form-data" action="{{route('product.index')}}" accept-charset="UTF-8" method="get">
@csrf
<div class="row">
<div class="input-group mt-4 col-md-7 offset-2">
<h2 class="mr-4">商品名</h2>
<input type="text" name="product_name" class="form-control" value="{{isset($product_name) ? $product_name : "" }}">
<span class="input-group-btn">
<input type="submit" class="btn btn-primary ml-4" value="検索">
</span>
</div>
</div>
<div class="row">
<div class="input-group mt-4 col-md-7 offset-2">
<h2>商品カテゴリ</h2>
<select id="category_id" name="category_id" class="form-control">
@foreach(config('categories') as $id => $category)
<option name="category_id" value="{{$id}}" @if ($id === $category_id_int) {{$id}} selected @endif>{{$category}}</option>
@endforeach
</select>
</div>
</div>
</form>
@foreach (config('categories') as $id => $category)
선택 상자의 값은 config/categories.php에 배열을 가져옵니다.
입력 유지
· 텍스트 상자
value="{{isset($product_name) ? $product_name : ""}}"
・셀렉트 박스
value="{{$id}}"@if ($id === $category_id_int) {{$id}} selected @endif >
왠지 old 함수를 사용할 수 없었기 때문에 이번 방법으로 입력 유지했습니다.
이것이 정답인지 확실하지 않지만 도움이 될 수 있다고 생각합니다.
이미지로서는
값을 컨트롤러에 보내고 보낸 값을 다시 표시시키고 있는 이미지입니다.
routes/web.php
<?php
return array(
'0'=>'未選択',
'1'=>'肉類',
'2'=>'魚介類',
'3'=>'果物類',
'4'=>'野菜類',
'5'=>'飲み物類',
'6'=>'漬物類',
'7'=>'菓子類',
);
▪️Controller
Controller/ProductsController.php
/**
* 商品検索
* @return $datas
*/
public function index(Request $request)
{
$query = Product::query();
$product_name = $request->product_name;
$category_id = $request->category_id;
//商品名の値が存在&商品名の値が空ではなかった場合
if ($request->has('product_name') && $product_name !== '') {
$query->where('product_name', 'like', '%' . $product_name . '%')->get();
}
//カテゴリーの値が存在&カテゴリーの値が0ではなかった場合
if ($request->has('category_id') && $category_id !== '0') {
$query->where('category_id', $category_id)->get();
}
$datas = $query->paginate(15);
//型変換
$category_id_int = intval($category_id);
return view('product.search', ['datas' => $datas, 'product_name' => $product_name, 'category_id_int' => $category_id_int]);
}
▪️route
routes/web.php
Route::prefix('products')->group(function () {
Route::get('/', 'ProductsController@index')->name('product.index');
});
Reference
이 문제에 관하여(laravel5.8 검색 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/freelanceradiation/items/9008771e0425c8aca481텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)