我想显示用户未读消息的总数,因此我创建了单独的函数:
public function getCountMessage($user_id)
{
....
return $count;
}
我访问该功能的途径:
Route::get('/message_count/{user_id}', [
'uses' => 'MessageController@getCountMessage',
'as' => 'count.message',
'middleware' => 'auth'
]);
我有header.blade.php
(将继承到master.blade.php
)以显示未读邮件的总数。
<li><a href="#">Messages <span class="label label-pill label-danger">{{ route('count.message', ['user_id' => Auth::user()->id]) }}</span></a></li>
但输出是
我希望输出看起来像这样:
消息(1)
我想在span
中输出该路线的回报,这是可能的还是任何想法如何实现这一点?顺便说一下,我做了一些研究,找不到解决方案。
请注意,header.blade.php
仅包含一个包含文件。这意味着没有人将此作为视图返回。希望你明白我的意思。
其他类似的例子,我检索我的图像:
刀片:
<img src="{{ route('account.image', ['filename' => $user->profile_picture_path]) }}">
控制器:
return new Response($file, 200);
图片的价值来自route
答案 0 :(得分:0)
首先从控制器传递数据到视图:
public function MessageController(){
....
return view('yourView')->with('count',$count);
}
然后如果您有部分View类似标题,没问题,可以在主视图中使用@include。
将你的patrial包含在yourView.blade.php上:
@include('header')
使用以下内容在header.blade.php中显示您的计数数据:
{{$count}}
或者您可以直接在header.blade.php上编写代码:
@php
$count = Auth:user()->id;
@endphp
{{$count}}
答案 1 :(得分:0)
我想你可以试试这个:
您可以在刀片文件中返回$count
,如:
public function getCountMessage($user_id)
{
....
return view('view',compact(count));
}
并更改您的刀片文件代码,如:
<li><a href="#">Messages <span class="label label-pill label-danger">{{$count}}</span></a></li>
希望对你有所帮助。
答案 2 :(得分:0)
我找到了解决问题的方法,但我不知道这是不是最好的。我使用jQuery向我的路由发送一个Http请求,并更改我的span的innerHTML。
<script type="text/javascript">
var theUrl = "{{ route('count.message', ['user_id' => Auth::user()->id]) }}"
$.get(
theUrl,
function(data) {
document.getElementById("message_count").innerHTML = data;
if (data == 0) {
$('#message_count').removeClass('label-danger');
$('#message_count').addClass('label-default');
}
}
);
</script>
答案 3 :(得分:0)
你可以在laraval中使用count函数,例如:
如果您在视图中传递变量。在我的情况下是一个用户。你可以用:
{{ $user->topics->count() }}
它显示了属于该特定用户的主题数量。
在你的情况下,这应该是
的长线 {{ $user->messages->count() }}
取决于数据库表的调用方式。如果/或这两者在模型中有关系
我希望这可以帮到你,