购物车会话和显示购物车退货中的项目数在Laravel中未定义

购物车会话和显示购物车退货中的项目数在Laravel中未定义,laravel,laravel-5,Laravel,Laravel 5,我在页面顶部有Cart()按钮,该按钮用于存储和显示用户购物车的产品编号。它在未登录的用户上也可见,他们可以将产品放入购物车中。在Laravel4.2中,这非常有效,但我已经迁移到Laravel5.4,我没有遇到这个问题 这就是函数 protected function setupLayout() { $user = self::getCurrentUser(); View::share('user', $user); // this is the p

我在页面顶部有
Cart()
按钮,该按钮用于存储和显示用户购物车的产品编号。它在未登录的用户上也可见,他们可以将产品放入购物车中。在Laravel4.2中,这非常有效,但我已经迁移到Laravel5.4,我没有遇到这个问题

这就是函数

protected function setupLayout()
{

    $user = self::getCurrentUser();       
    View::share('user', $user);

     // this is the part which cause error
    View::share('cartCount', count(Session::get('cart', array())));
}

public static function isLoggedIn()
{
    $user = Auth::user();
    if ($user !== null) {
        return true;
    } else {
        return false;
    }
}
这是我的看法

@if(!Auth::check())

    <li><a href="{{ URL::to('/cart') }}">Cart ( {{ $cartCount }} )</a></li>

@else 

    <li><a href="{{ URL::to('/cart') }}">Cart ( {{ $cartCount }} )</a></li>

@endif

请将其更新为{{$cartCount或'0'}。因此,如果用户首次加载页面时未设置该变量,则会显示0,并且不会出现任何错误。

我认为您可以尝试以下方法:

@if(!Auth::check())

    <li><a href="{{ URL::to('/cart') }}">Cart ( {{ isset($cartCount) ?  $cartCount : 0}} )</a></li>

@else 

    <li><a href="{{ URL::to('/cart') }}">Cart ( {{ isset($cartCount) ?  $cartCount : 0}} )</a></li>

@endif
@if(!Auth::check())
  • @否则
  • @恩迪夫
    已更新

    protected function setupLayout()
    {
    
        $user = self::getCurrentUser();  
    
        $data = array(
        'user' => $user,
        'cartCount' => count(Session::get('cart', array())),
        );     
        View::share('data', $data);
    
    
    }
    
    @if(!Auth::check())
    
        <li><a href="{{ URL::to('/cart') }}">Cart ( {{ $data['cartCount']}} )</a></li>
    
    @else 
    
        <li><a href="{{ URL::to('/cart') }}">Cart ( {{ $data['cartCount']}} )</a></li>
    
    @endif
    
    受保护的函数setupLayout()
    {
    $user=self::getCurrentUser();
    $data=数组(
    “用户”=>$user,
    'cartCount'=>count(会话::get('cart',array()),
    );     
    视图::共享('data',$data);
    }
    @如果(!Auth::check())
    
  • @否则
  • @恩迪夫

    希望这为你工作

    您在哪里定义
    setupLayout
    isLoggedIn
    isLoggedIn
    <代码>设置布局未被使用。应该删除。抱歉,它已被删除,但未被使用?这可能是问题所在,因为这就是你共享变量的地方:)嗯,好问题。我有另一个计数器,我已经从问题中删除了它,它正在工作
    View::share('messagescont',$user->messages()->where('read_state','0')->where('from_admin','1')->count())仅此一个不起作用此
    {{$cartCount?'0':$cartCount}}
    返回相同的错误。请尝试我在回答中所说的。{{$cartCount或“0”}正在加载页。但当我将产品添加到购物车中时,不会显示产品的数量。始终像其他答案一样显示
    0
    。这只会使页面加载,但如果我将项目放在购物车中仍然显示
    0
    ,我已经用
    dd(Session::get('cart',array())
    响应更新了问题,因此我确信其中有产品。如果我直接在blade
    中使用({{count(Session::get('cart',array())})
    它显示的数字正确。仍然错误
    未定义变量:data
    我也在
    AppServiceProvider
    boot()
    函数中尝试过它。@Ivan:如果您可以在刀片文件中直接使用$cartCount,那么我想您可以尝试使用“返回视图()”
    protected function setupLayout()
    {
    
        $user = self::getCurrentUser();  
    
        $data = array(
        'user' => $user,
        'cartCount' => count(Session::get('cart', array())),
        );     
        View::share('data', $data);
    
    
    }
    
    @if(!Auth::check())
    
        <li><a href="{{ URL::to('/cart') }}">Cart ( {{ $data['cartCount']}} )</a></li>
    
    @else 
    
        <li><a href="{{ URL::to('/cart') }}">Cart ( {{ $data['cartCount']}} )</a></li>
    
    @endif