【问题标题】:Laravel Blade @yield variable scopeLaravel Blade @yield 变量范围
【发布时间】:2015-10-19 07:31:19
【问题描述】:

我有两个几乎相同的页面。一个显示用户列表,另一个显示相同的列表,但信息更详细。 所以我称两个视图扩展了相同的包装器。然而,Laravel 抱怨 $user 没有在 verbose.blade.php 中定义。我将 $users 传递给似乎可用于 content.blade.php 的视图,但在 foreach 循环中创建的 $user 似乎无法在 verbose.blade.php 中访问。

verbose.blade.php

@extends('layout.content')

@section('user')
    {{ dd($user) }}
@endsection

nonverbose.blade.php

@extends('layout.content')

@section('user')
    {{ dd($user) }}
@endsection

content.blade.php

@extends('layout.app')

@section('content')
    @foreach($users as $user)
        @yield('user')
    @endforeach
@endsection

我也试过@yield('user', ['user' => $user])

我将如何让 $user 在 verbose.blade.php 中可用?

【问题讨论】:

  • 只是出于好奇(我知道这会修复错误,但我不知道这是否是一个解决方案)您是否将用户作为值包含在您的控制器函数 return view('verbose', compact('users', 'user')) 中?
  • 我假设你的控制器有类似return view('verbose', compact('users');?
  • 如果这不是 Laravel 3,你不应该使用 @endsection 试试 @stop
  • @Ben 是的,我有这个
  • @saadel 是这样吗?文档在哪里?

标签: laravel laravel-5 blade


【解决方案1】:

您尝试过使用@include 吗?

@include('user', ['user' => $user])

【讨论】:

  • 我也喜欢这个答案。如果他做了一个 partials/user.blade.php,这会很好用。
  • 如果我要这样做,我将如何指定我想要详细还是非详细部分?也许我的问题不清楚我需要在两个视图之间切换。我会更新问题。
【解决方案2】:

由于 Laravel 解析刀片模板的顺序,您会收到该错误。

有时,我们的程序员会深深扎根于我们的“不要重复自己 (DRY)”原则,以至于我们太过分了。这是其中之一——您应该简单地将 foreach 循环直接放入 verbose.blade.php:

@extends('layout.app')

@section('content')
    @foreach($users as $user)
        @yield('user')
    @endforeach
@endsection

【讨论】:

  • 在 content.blade.php 的 foreach 中实际上有更多信息,我不想将所有这些信息都放在我的详细刀片和非详细刀片中。但如果这是我必须做的,我会这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2021-07-06
  • 2017-05-16
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
相关资源
最近更新 更多