【Laravel】 검색 기능의 구현 ③ ~ multiple을 사용하여 복수 선택 가능하게 ~

5902 단어 라라벨
이전 ⬇️ 기사에서 풀다운에서 선택하여 검색할 수 있는 기능을 구현했습니다.

여기에서 만든 검색 기능을 풀다운에서 여러 선택하여 검색할 수 있도록 업데이트해 봅니다.

제작물



"매체"를 여러 개 선택하여 검색할 수 있습니다.


뷰 편집



이번 편집한 것은, 「매체」검색 기능의 select 요소만입니다.

select 요소의 name 속성을 배열로 하여 선택한 option 요소를 배열에서 받을 수 있습니다.
또한 select 요소에 multiple 속성을 추가합니다.

index.blade.php
<form action="{{ route('index') }}" method="GET">

//略

<label for="">媒体
  //元のコード  <select name="medium">
  <select name="medium[]" multiple>
    <option value="">全て</option>
    @foreach ($media_list as $media_item)
      <option value="{{ $media_item->getMedium() }}">{{ $media_item->getMedium() }}</option>
    @endforeach
  </select>
</label>

//略

</form>

루트 확인



루트는 이전에 만든 것과 같습니다.

web.php
Route::get('/', [TeachingMaterialController::class, 'index'])->name('index');

컨트롤러 편집



이번 편집한 것은 「매체」의 검색 부분만입니다.

TeachingMaterialController.php
class TeachingMaterialController extends Controller
{
    public function index(Request $request)
    {
        //略

        //元のコード
        if(!empty($media)) {
            $query->where('medium', '=', $medium);
        }

        //編集後のコード
        if(!$media[0]==null) {
            foreach($media as $medium) {
                $query->orwhere('medium', '=', $medium);
            }
        }

       //略


해설


  • 원래의 형태에서는, option要素の「全て」 를 선택했을 경우는 value="" 와 같이 하늘의 데이터가 되어, $media의 내용은 하늘이었습니다.
  • 이번 폼의 select 요소의 name 속성을 배열로 한 것으로, 「모두」를 선택한 경우의 $media 의 내용은 이하와 같이 됩니다. 따라서 if 문의 !empty($media)!$media[0]==null라는 조건으로 변경했습니다.
  • array (
      0 => NULL,
    )  
    
  • if 문에서 $media로 받은 배열의 내용 하나씩 데이터를 좁히십시오.


  • 참고 기사

    좋은 웹페이지 즐겨찾기