【问题标题】:Undefined variable even if it is defined Laravel未定义的变量,即使它已定义 Laravel
【发布时间】:2019-08-06 00:28:22
【问题描述】:

所以我得到这个错误 Undefined variable: games 即使我的变量是在控制器中定义的:

我的控制器:

 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

如果需要,这里是我在 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;
   }
}

【问题讨论】:

标签: php laravel


【解决方案1】:

您忘记在openingPage() 中分配$games,试试这个:

public function openingPage($id) {

     $this->getCaseData($id);

     $games = $this->getGames();

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

【讨论】:

  • 我更新了它,现在我正在尝试获取非对象的属性。这个错误现在来自视图刀片
  • 因为$games是数组数组,而不是对象数组。
  • 我回答了你原来的问题,如果原来的错误消失了,请接受并投票,如果你还有其他问题,请打开一个新问题。
  • 我该如何解决这个问题?你能帮帮我吗?
  • 对不起,我想提供帮助,但这不是它在 SO 的工作方式,我们无法调试您的所有代码,如果您愿意,您可以编辑您的问题并添加详细信息
【解决方案2】:

正如@dparoli 提到的,您忘记将游戏分配给$games 变量。

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

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

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

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2019-04-08
    • 2022-01-21
    • 2020-11-30
    • 2023-01-11
    • 2015-01-21
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多