【问题标题】:ErrorException Undefined variable on Blade View when trying to View Different Contents in Laravel 7尝试在 Laravel 7 中查看不同内容时,刀片视图上的 ErrorException 未定义变量
【发布时间】: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 循环一起使用?任何建议将不胜感激。非常感谢!

【问题讨论】:

    标签: sql laravel loops foreach laravel-blade


    【解决方案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

      【讨论】:

      • 这是一个非常有用的信息。太感谢了! :)
      猜你喜欢
      • 2014-03-15
      • 2017-08-24
      • 2017-02-08
      • 2018-07-24
      • 2017-06-17
      • 2019-11-10
      • 2018-11-26
      • 2019-01-22
      • 1970-01-01
      相关资源
      最近更新 更多