【发布时间】:2017-08-09 00:33:46
【问题描述】:
我需要返回用户在搜索栏中所写内容的结果,但是当我按下搜索进行测试时,什么也没有发生。
这就是我创建搜索栏的方式
<form class="form-inline" role="search" action="{{ route('search-source') }}" method="POST">
{{ csrf_field() }}
<div class="form-group">
<input type="text" class="form-control" name="searchbar" placeholder="Find a source!">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
在我的控制器中,我有以下代码来查找用户在搜索栏中输入的内容。它在数据库中搜索与搜索栏中所写内容类似的标题。如果什么也没找到,则返回错误(这是有效的)。 如果返回高于 0 的行,则需要将该结果返回到页面
public function searchSource(Request $request){
$this->validate($request,[
'searchbar' => 'required',
]);
$find = $request['searchbar'];
$query = Source::where('title','LIKE', '%'.$find.'%')->where('user_id', Auth::user()->id)->get();
if(count($query) > 0) {
return redirect()->route('sources-index')->with(['query' => $query]);
}else{
return redirect()->route('sources-index')->with('customerror', 'nothing found, try a different searchterm.');
}
}
返回页面,如果需要搜索词,则需要获取结果,否则需要提供数据库的所有内容
@if(!empty($query))
@foreach($query as $querys)
<tr>
<td class="source-cell">
{{$querys->title}}
</td>
<td>
{{$querys->summary}}
</td>
<td>
{{$querys->course->name}}
</td>
</tr>
@endforeach
@else
@foreach ($sources as $source)
<tr>
<td class="source-cell">
{{$source->title}}
</td>
<td>
{{$source->summary}}
</td>
<td>
{{$source->course->name}}
</td>
</tr>
@endforeach
@endif
我在几个地方尝试了dd(),一切正常,除了在页面上,我在 if 语句之后尝试了dd($query),没有发生任何事情。
foreach 之后我试了一下,没有任何反应。
但是当我在 if 语句之前尝试它时,我得到了一个错误
未定义变量:查询(查看: ...\resources\views\sources\index.blade.php)
我做错了什么。
【问题讨论】: