【问题标题】:ErrorException Trying to access array offset on value of type null (View: I:\Laravel Project\EcomLaravelProject\resources\views\header.blade.php)ErrorException 试图访问 null 类型值的数组偏移量(查看:I:\Laravel Project\EcomLaravelProject\resources\views\header.blade.php)
【发布时间】:2021-09-08 19:00:35
【问题描述】:

这是我的 Laravel ProductController 文件功能:

static function cartItem()
 {
        $userId=Session::get('user')['id'];
        return Cart::where('user_id',$userId)->count();
    }

这是我的 header.blade.php 文件,我在其中使用 ProductController.php 文件 cartItem() 功能属性,但我无法解决:

 <?php 
 use App\Http\Controllers\ProductController;
 $total=ProductController::cartItem(null);
?>

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav me-auto mb-2 mb-lg-0">
      <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Brand
          </a>
        </li>
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Order</a>
        </li>
        
      </ul>
      <form class="d-flex">
        <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
        <button class="btn btn-outline-success" type="submit">Search</button>
      </form>
      
    </div>
    <div class="nav-item navbar-right" >
          <a class="nav-link" href="#">cart({{$total}})</a>
</div>
  </div>
</nav>

"ErrorException 试图访问 null 类型值的数组偏移量 (视图:I:\Laravel Project\EcomLaravelProject\resources\views\header.blade.php)"

【问题讨论】:

  • 应该是$userId=Session::get('user');

标签: php laravel


【解决方案1】:

如果您的会话没有 user 数据,就会发生这种情况。

Session::get('user'); //returns null if the session doesn't have user data

//so 

Session::get('user')['id']; //Trying to access array offset on value of type null

//it is like writing 

null['id']; //Trying to access array offset on value of type null

这里没有“正确”的解决方案,最简单的方法是在执行任何其他操作之前检查会话中是否存在user

static function cartItem()
{
    $user = Session::get('user');
   
    if($user == null){
        return 0;
    }

    return Cart::where('user_id',$user['id'])->count();
}

【讨论】:

    【解决方案2】:

    这个错误表示你的用户会话为空所以你无法获取id,你必须先检查会话是否有用户,你可以这样写:

    if (Session::has('users')) {
      $user=Session::get('user');
      return Cart::where('user_id',$user->id)->count();
    }
    

    【讨论】:

    • 这个解决方案是解决我的错误,但不是真正的问题。不过非常感谢您的建议
    【解决方案3】:

    对于 Laravel 4.0,请使用:

    $userId = session_id();
    

    对于 Laravel 4.1 和 Laravel 4.1 以上的版本。,使用:

    $userId = Session::getId();
    

    对于 Laravel 5.5,添加 use Session,然后:

    $userId = session()->getId();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2021-07-23
      相关资源
      最近更新 更多