首页 > 解决方案 > 我未设置的刀片中设置的变量

问题描述

我正在尝试根据是否设置变量在我的刀片文件中显示某些内容。但是正在设置我没有设置的变量。

我有 GameController.php:

use App\Models\Game;

class GameController extends Controller
{

    public function index() {

        $games = Game::latest()->get();

        return view('game.index', [
            'games' => $games
        ]);

    }
...

然后在布局刀片文件中我这样做:

@isset($game->name)
<h1>{{ $game->name }}</h1>
@endisset

所以我设置了$games,但我没有设置$game。但是, $game 已设置。我希望此标头显示我是否执行 show() 并且 $game 将被设置,但它不应该显示在未设置 $game 的 index() 中。这是正常行为吗?如果是这样,我有什么更好的方法来处理这个问题?

标签: laravel

解决方案


我发现了这个问题。缺乏对@extend 和@section 工作原理的理解。

index.blade.php 扩展 layout.blade.php

@extends ('layout')

它出现在布局之前的所有索引过程。因此,如果您要在网页上查看源代码,尽管从技术上讲,索引中的 foreach 位于标题下方,但它在标题之前处理并设置 $game. 我刚刚重构了 foreach 中使用的变量,这解决了我的问题。

谢谢kerbh0lz,您在技术上帮助我找到了它。


推荐阅读