我在Laravel中使用了View Composer,如下所示:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use App\Models\Green;
use App\Models\Blue;
class SidebarServiceProvider extends ServiceProvider
{
public function boot(): void
{
View::composer('layouts.sidebar', function ($view) {
$dataGreen = Green::all();
$dataBlue = Blue::all();
$view->with([
'green' => $dataGreen,
'blue' => $dataBlue
]);
});
}
}
然后我将我的提供程序添加到数组中:
App\Providers\SidebarComposerServiceProvider::class,
但是当我尝试用@foreach
返回一个数据时,我得到了下面的框架错误
Undefined variable $dataGreen
2条答案
按热度按时间e4eetjau1#
错误消息“Undefined variable $dataGreen”表示在使用@foreach迭代的视图中无法识别变量$dataGreen。要解决此问题,需要确保将变量正确传递给视图。
在您的SidebarServiceProvider类中,您正在向视图传递变量$绿色和$blue,而不是$dataGreen和$dataBlue。因此,您应该按如下所示更新视图合成器:
现在,在视图文件(layouts.sidebar)中,可以直接访问变量绿色和blue:
c90pui9n2#
这是因为定义的变量是$绿色和$blue,因为它们是你在视图编辑器中返回的名称,而不是函数中声明的变量。