尝试在 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