2016-09-28 41 views
1

我试图创建一个高级搜索我的网站,但是当我提交表单的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方法,改变路线来发表您的问题将得到解决 –

回答

1

我觉得这是更好地使用POST方法提交表单并尝试像后续。

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

在你的form标签中使用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

变更路线发布方法(路线:: POST),它会没事的。

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> 

Post方法

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')); 
}