尝试在 Laravel 7 中查看不同内容时,刀片视图上的 ErrorException 未定义变量

Posted

技术标签:

【中文标题】尝试在 Laravel 7 中查看不同内容时,刀片视图上的 ErrorException 未定义变量【英文标题】:ErrorException Undefined variable on Blade View when trying to View Different Contents in Laravel 7 【发布时间】:2021-02-14 10:46:12 【问题描述】:

我正在尝试在 layouts 文件夹中的dashboard.blade.php 的标题上执行foreach 循环

@foreach ($moneytrades as $mt)
 <div class="col mr-2">
      <div class="text-xs font-weight-bold text-primary text-uppercase mb-1">Deposited</div>            
      <div class="h5 mb-0 font-weight-bold text-gray-800">Php  $mt->mt_deposit</div>
 </div>
@endforeach

我的 web.php 路由是

Route::get('/home', 'HomeController@index');

在我的 HomeController 我有

public function index()

    $moneytrades = MoneyTrade::all();

    return view('layouts.dashboard', compact('moneytrades'));

这完全没问题。但是,我在循环下方有一个@yield('content'),每当我单击按钮以路由到新页面时,我都会收到此错误消息

ErrorException Undefined variable: moneytrades (View: C:\xampp\htdocs\Laravel\fss\resources\views\layouts\dashboard.blade.php)

我可以做些什么来解决这个问题,以便 layouts.dashboard 扩展的所有内容都可以与这些 foreach 循环一起使用?任何建议将不胜感激。非常感谢!

【问题讨论】:

【参考方案1】:

您可以使用视图组件,而不是使用部分(您正在为此做@yield('content'))。

<div class="container">
        @component('content', ['moneytrades' => $moneytrades])
        @endcomponent
</div> 

然后访问你的组件内容,

   <div class="col-md-8">
         @foreach ($moneytrades as $mt)
            -- do whatever you want  --
         @endforeach
   </div>

编辑:刀片组件中的视图组件适用于 Laravel >= 5.4。

【讨论】:

【参考方案2】:

您可以使用视图编辑器在多个视图之间共享日期。 例如,在您的 AppServiceProvider 的启动方法中,您可以添加:

View::composer(
    ['dashboard', 'other-view'],
    'App\Http\View\Composers\DashboardComposer'
);

并创建一个作曲家:例如“App\Http\View\Composers\DashboardComposer”

class DashboardComposer
    
    public function compose(View $view)
    
        $view->with('moneytrades', MoneyTrade::all());
    

现在所有向作曲家注册的视图都可以访问 $moneytrades。 并且从动作中只返回视图:

return view('layouts.dashboard'); // or any other registered view

查看文档:https://laravel.com/docs/7.x/views#view-composers

【讨论】:

这是一个非常有用的信息。太感谢了! :)

以上是关于尝试在 Laravel 7 中查看不同内容时,刀片视图上的 ErrorException 未定义变量的主要内容,如果未能解决你的问题,请参考以下文章

@include 之后刀片未在刀片中显示内容 - Laravel 4.2

如何在刀片 Laravel 中使用带参数的 url

如何在 laravel 刀片模板中使用 JSON 数据进行模型绑定?

在刀片 laravel 中定义变量

Laravel 刀片模板停止重新加载主布局

为啥 vue js 组件没有显示在 laravel 刀片中?