Laravel 5.2搜索结果如何高亮显示?
How to make Highlight for search results by Laravel 5.2?
可见:
@if($posts)
@foreach($posts as$post)
<h2>
<a href="{{route('home.post',$post->id)}}">{{$post->title}}</a>
</h2>
<p class="lead">
by <a href="index.php">{{$post->user->name}}</a>
</p>
<p><span class="glyphicon glyphicon-time"></span> Posted {{$post->created_at->diffForHumans()}}</p>
<hr>
<img class="img-responsive" src="{{$post->photo->file}}" alt="">
<hr>
{!! str_limit($post->body,35 )!!}
<a class="btn btn-primary" href="{{route('home.post',$post->id)}}">Read More <span class="glyphicon glyphicon-chevron-right"></span></a>
<hr>
@endforeach
@endif
在控制器中:
public function searchmulti(){
$keyword=Input::get('title');
$posts = Post::where('title', 'like', "%$keyword%")->get();
return view('Admin.comments.postsauthor',compact('posts'));
}
////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// /////////////////////////////////////////////////
使用toArray()
方法(see here)将搜索结果转换为数组,然后
遍历结果并使用 str_replace
将搜索到的词替换为 <span class="highlight">your word</span>
在此之后,您将得到 $post['title']
(而不是 $post->title
),其中突出显示的跨度在
内
当然,您必须在 css
中添加带有一些样式的 .highlight
$posts = Post::where('title', 'like', "%$keyword%")->get()->toArray();
foreach($posts as &$post){
$post['title']=str_replace($keyword,"<span class='highlight'>$keyword</span>",$post['title']);
}
PS 如果您不想将结果转换为数组,您可以直接在 eloquent 模型中编辑图块,但我更喜欢数组以确保我不会意外保存更改
可见:
@if($posts)
@foreach($posts as$post)
<h2>
<a href="{{route('home.post',$post->id)}}">{{$post->title}}</a>
</h2>
<p class="lead">
by <a href="index.php">{{$post->user->name}}</a>
</p>
<p><span class="glyphicon glyphicon-time"></span> Posted {{$post->created_at->diffForHumans()}}</p>
<hr>
<img class="img-responsive" src="{{$post->photo->file}}" alt="">
<hr>
{!! str_limit($post->body,35 )!!}
<a class="btn btn-primary" href="{{route('home.post',$post->id)}}">Read More <span class="glyphicon glyphicon-chevron-right"></span></a>
<hr>
@endforeach
@endif
在控制器中:
public function searchmulti(){
$keyword=Input::get('title');
$posts = Post::where('title', 'like', "%$keyword%")->get();
return view('Admin.comments.postsauthor',compact('posts'));
}
////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// /////////////////////////////////////////////////
使用toArray()
方法(see here)将搜索结果转换为数组,然后
遍历结果并使用 str_replace
将搜索到的词替换为 <span class="highlight">your word</span>
在此之后,您将得到 $post['title']
(而不是 $post->title
),其中突出显示的跨度在
当然,您必须在 css
中添加带有一些样式的.highlight
$posts = Post::where('title', 'like', "%$keyword%")->get()->toArray();
foreach($posts as &$post){
$post['title']=str_replace($keyword,"<span class='highlight'>$keyword</span>",$post['title']);
}
PS 如果您不想将结果转换为数组,您可以直接在 eloquent 模型中编辑图块,但我更喜欢数组以确保我不会意外保存更改