未定义变量,即使已定义Laravel

时间:2019-08-05 16:04:45

标签: php laravel

所以我得到这个错误未定义变量:即使我的变量是在控制器中定义的,游戏:

我的控制器:

 public function openingPage($id) {

      $this->getCaseData($id);

      $this->getGames();

      return view('caseopener', ['cases' => $this->data])->with('games',$games);;

    }

    private function getCaseData($id) {
        $items = DB::table('cases')->where('id', $id)->get();
        $data = @$items[0] ? $items[0] : array();
        if(isset($data->items)) {
            $data->items = json_decode($data->items, true);
        }

        $this->data = $data;
    }

   private function getGames() {
      $games = array();
      foreach ($this->data->items as $item) {
          $game = new Game($item);
          $games[] = array(
            'id' => $game->id,
            'name' => $game->name,
            'image' => $game->image,
          );
      }

      return $games;
  }

问题似乎出在getGames()函数

我的刀片:

@for ($i = 0; $i < 10; $i++)
                      <div class="item" style="background-image:url({{ $games->image }})">
            </div>
          @endfor

如果需要,这里是我的模型'Game',该模型用于该getGames()函数

class Game extends Model
{
  private $id;
  public $data;

  public function __construct($id) {
       parent::__construct();
       $this->id = $id;
       $this->data = $this->getData();
   }

   private function getData() {

       $game = DB::table('products')->where('id', $this->id)->first();

       if(empty($game)) return array();

       return $game;
   }
}

2 个答案:

答案 0 :(得分:2)

您忘记在$games中分配openingPage(),请尝试以下操作:

public function openingPage($id) {

     $this->getCaseData($id);

     $games = $this->getGames();

     return view('caseopener', ['cases' => $this->data])->with('games',$games);;
}

答案 1 :(得分:1)

如@dparoli所述,您忘记将游戏分配给$games变量。

此外,输出值时有一个错误:$games->image应该是$games[$i]['image']。 (访问特定游戏,并获取image值作为数组值)

如果将来有可能少于或少于10场比赛,我将for循环替换为foreach

@foreach($games in $game)
    <div class="item" style="background-image:url({{ $game['image'] }})">
    </div>
@endforeach