我已经记录了一个标题用户菜单,每个注册的用户都有一个余额导入,我想在我的标题部分用户登录中显示此平衡,我尝试使用VIEW SHARE,就像这样但它没有&# 39;运作良好:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
//its just a dummy data object.
$balance = UserBalance::where('user_id', Auth::id())->first();
// Sharing - the error interested this section:
view()->share('balance', $balance->balance);
}
}
我的错误
AppServiceProvider.php第23行中的ErrorException:试图获取 非对象的属性
line 23 : view()->share('balance', $balance->balance);
菜单用户部分(在我的所有视图的布局中):
@if (Auth::guest())
<li><a href="{{ url('login')}}">Accedi</a></li>
<li class="item-custom"><a href="{{url('register')}}">Registrati</a></li>
@else
<li class="hello-user">
Ciao {{Auth::user()->name}}
</li>
<li> Your Balance: {{$balance}}</li>
@endif
感谢您的帮助!
答案 0 :(得分:1)
它可能不是最佳答案,但您考虑过将结果存储在会话中吗?
任何视图都可以检查和读取会话。
if ($request->session()->has('balance')) {
$request->session()->get('balance', 0);
}
答案 1 :(得分:1)
检查用户是否已登录。如果用户未通过身份验证而不是Auth::user()->id
,则您还需要检查$balance
。如果查询返回null,则将显示错误。
AppServiceProvider.php第23行中的ErrorException:试图获取 非对象的属性
试试这个:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
if(Auth::check()){
//its just a dummy data object.
$balance = UserBalance::where('user_id', Auth::user()->id)->first();
// Sharing - the error interested this section:
view()->share('balance', (count($balance) > 0) ? $balance->balance : 0);
}
}
}
答案 2 :(得分:0)
您的Auth :: id()返回null或它不检索会话ID。因为Laravel会话是使用会话中间件处理的,所有中间件都是在AppserviceProvider之前执行的。因此,它不会检索会话ID。您可以使用此代码。因为在编写视图时将执行view() - &gt; composer clouser。然后你可以使用会话ID
public function boot()
{
$this->getBalance();
}
public function getBalance()
{
view()->composer('*', function ($view) {
$balance = UserBalance::where('user_id', Auth::id())->first();
View()->share('balance', $balance->balance);
});
}