我需要返回用户在搜索栏中写的内容的结果,但是当我按搜索来测试它时没有任何反应。
这就是我创建搜索栏的方式
<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语句之前尝试它时出现错误
未定义的变量:query(查看: ... \资源\视图\源\ index.blade.php)
我做错了什么。
答案 0 :(得分:2)
在上面的代码$query
拼写错误
更改
@if(!empty($uery))
到
@if(!empty($query))
修改您的控制器,如下所示:
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();
return redirect()->route('sources-index')->with(['query' => $query]);
}
修改您的视图,如下所示:
@if(!empty($uery))
@foreach($query as $querys)
<tr>
<td class="source-cell">
{{$querys->title}}
</td>
<td>
{{$querys->summary}}
</td>
<td>
{{$querys->course->name}}
</td>
</tr>
@endforeach
@else
nothing found, try a different searchterm.
@endif
@if(!empty($sources))
@foreach ($sources as $source)
<tr>
<td class="source-cell">
{{$source->title}}
</td>
<td>
{{$source->summary}}
</td>
<td>
{{$source->course->name}}
</td>
</tr>
@endforeach
@else
nothing found, try a different searchterm.
@endif
因为在你的else部分重定向没有$ query变量。
答案 1 :(得分:0)
@ Peter Arents请你试试如下
function isClicked(){
var letter = $(this).text().trim();
console.log(text);
}
答案 2 :(得分:0)
redirect()->with()
使用会话来存储数据,因此您需要将代码更改为:
@if (session()->has('query'))
@foreach(session('query') as $querys)
或者,您需要将redirect()
部分更改为:
return view('query.index', compact('query'));