2016-09-28 27 views
1

私のウェブサイトの高度な検索を作成しようとしましたが、フォームを送信するとURLが変更されず読み込みに固執しましたが、URLに/media/search?s=name&type=videoを書き込んだ場合、 問題は何ですか?laravelフォームを取得できません

ルート:

Route::get('/media/search','[email protected]'); 

ビュー:

 <form class="col-lg-4" method="get" action="/media/search"> 
      <div class="search-filter bordered"> 
       <div class="search-label uppercase">کلمه کلیدی</div> 
       <div class="input-icon right"> 
        <i class="icon-magnifier"></i> 
        <input type="text" name="s" class="form-control" placeholder=""> </div> 
       <div class="search-label uppercase">نوع محتوا</div> 
       <select name="type" class="form-control"> 
        <option value="all"><b> همه نوع محتوا</b></option> 
        <option value="image">عکس</option> 
        <option value="voice">صدا</option> 
        <option value="video">فیلم</option> 
        <option value="note">متن</option> 
       </select> 
       <div class="search-label uppercase">دسته بندی ها</div> 
       <select name="category" class="form-control"> 
        <option value="all"><b> همه نوع محتوا</b></option> 
        <option value="image">عکس</option> 
        <option value="voice">صدا</option> 
        <option value="video">فیلم</option> 
        <option value="note">متن</option> 
       </select> 

       <input value="جستجو" type="submit" class="btn green bold uppercase btn-block"> 
      </div> 
     </form> 

とコントローラ:

public function search(Request $request){ 
    $medias = Media::query(); 
    if($request->get('s')){ 
     $s = $request->get('s'); 
     $medias->where('desc','like','%'.$s.'%')->orWhere('name','like','%'.$s.'%'); 
    } 
    if ($request->get('type')) { 
     $type = $request->get('type'); 
     if ($type == 'image') { 
      $medias->where('format', 'like', 'jpg'); 
     } 
     if ($type == 'voice') { 
      $medias->where('format', 'like', '3gp'); 
     } 
     if ($type == 'video') { 
      $medias->where('format', 'like', 'mp4'); 
     } 
     if ($type == 'note') { 
      $medias->where('format', 'like', 'txt'); 
     } 
    } 

    $medias = $medias->get(); 

    return view('media.search')->with(compact('medias','tags','categories')); 
} 
+0

使用POSTメソッドでPostメソッドとあなたを投稿するルートを変更問題は解決される –

答えて

1

私はフォームを送信するためにPOSTメソッドを使用して、次のようなことをしようとする方が良いと思います。

Route::post('/media/search',array('use'=>'[email protected]','as'=>'searchForm')); 

あなたのフォームタグでは、bladingを使用してください。

<form class="col-lg-4" method="post" action="{!!URL::route('searchForm')!!}"> 
お使いのコントローラで

public function search(){ 
$medias = Media::query(); 
if(Input::get('s')){ 
    $s = Input::get('s'); 
    $medias->where('desc','like','%'.$s.'%')->orWhere('name','like','%'.$s.'%'); 
} 
if (Input::get('type')) { 
    $type = Input::get('type'); 
    if ($type == 'image') { 
     $medias->where('format', 'like', 'jpg'); 
    } 
    if ($type == 'voice') { 
     $medias->where('format', 'like', '3gp'); 
    } 
    if ($type == 'video') { 
     $medias->where('format', 'like', 'mp4'); 
    } 
    if ($type == 'note') { 
     $medias->where('format', 'like', 'txt'); 
    } 
} 

$medias = $medias->get(); 

return view('media.search')->with(compact('medias','tags','categories')); 

}

0
方法(ルート::ポスト)を投稿するあなたのルートを変更し

、それはOKなるつもり。

0

この ルートが好きですか:

Route::post('/media/search','[email protected]'); 

変更フォームメソッド

<form class="col-lg-4" method="POST" action="/media/search"> 
    <div class="search-filter bordered"> 
     <div class="search-label uppercase">کلمه کلیدی</div> 
     <div class="input-icon right"> 
      <i class="icon-magnifier"></i> 
      <input type="text" name="s" class="form-control" placeholder=""> </div> 
     <div class="search-label uppercase">نوع محتوا</div> 
     <select name="type" class="form-control"> 
      <option value="all"><b> همه نوع محتوا</b></option> 
      <option value="image">عکس</option> 
      <option value="voice">صدا</option> 
      <option value="video">فیلم</option> 
      <option value="note">متن</option> 
     </select> 
     <div class="search-label uppercase">دسته بندی ها</div> 
     <select name="category" class="form-control"> 
      <option value="all"><b> همه نوع محتوا</b></option> 
      <option value="image">عکس</option> 
      <option value="voice">صدا</option> 
      <option value="video">فیلم</option> 
      <option value="note">متن</option> 
     </select> 

     <input value="جستجو" type="submit" class="btn green bold uppercase btn-block"> 
    </div> 
</form> 

形であなたのコントローラ

public function postSearch(Request $request){ 
    $medias = Media::query(); 
    if($request->get('s')){ 
    $s = $request->get('s'); 
    $medias->where('desc','like','%'.$s.'%')->orWhere('name','like','%'.$s.'%'); 
    } 
    if ($request->get('type')) { 
    $type = $request->get('type'); 
    if ($type == 'image') { 
     $medias->where('format', 'like', 'jpg'); 
    } 
    if ($type == 'voice') { 
     $medias->where('format', 'like', '3gp'); 
    } 
    if ($type == 'video') { 
     $medias->where('format', 'like', 'mp4'); 
    } 
    if ($type == 'note') { 
     $medias->where('format', 'like', 'txt'); 
    } 
    } 

    $medias = $medias->get(); 
    return view('media.search')->with(compact('medias','tags','categories')); 
} 
関連する問題