我尝试为我的网站创建一个高级搜索,但是当我提交表单时,网址没有更改并且卡在加载中但是如果我在网址中写/media/search?s=name&type=video
它就可以了!
问题是什么?
路线:
Route::get('/media/search','MediaController@search');
视图:
<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 :(得分:1)
我认为最好使用post方法提交表单,并按照以下方式进行尝试。
Route::post('/media/search',array('use'=>'MediaController@search','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'));
}
答案 1 :(得分:0)
将路线更改为发布方法(路线::发布),它会没问题。
答案 2 :(得分:0)
这样做 路线:
Route::post('/media/search','MediaController@postSearch');
更改表单方法
<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'));
}