【发布时间】:2021-10-07 23:20:22
【问题描述】:
是否有一种实用的方法可以访问更高级别组件上的视图数据?让我解释一下:
我有一个只有核心 HTML 标记的 基本布局 views/layouts/base.blade.php
<!DOCTYPE html>
<html >
<head>
<title>Page Title</title>
</head>
<body>
{{ $slot }}
</body>
</html>
一个主布局布局组件扩展了这个views/layouts/main.blade.php
<x-base-layout>
<x-header-main />
{{ $slot }}
<x-footer-main />
</x-base-layout>
两者都有组件类,可以在默认的views/components 文件夹之外工作。
然后,我的主页视图设置为这样views/home.blade.php
<x-main-layout>
<h1>{{ $data['my_heading'] }}</h1>
</x-main-layout>
来自 HomeController app/Http/Controllers/HomeController.php
<?php
namespace App\Http\Controllers;
class HomeController extends Controller
{
public function index()
{
$data = { "my_heading" : "My Heading", "my_email" : "my@email.com" };
return view('home')->with(compact('data'));
}
}
最后,真正的问题。我的Footer Main组件是这样的views/components/footer-main.blade.php
<footer>
<p>{{ $data['my_email'] }}</p>
</footer>
但是,正如你想象的那样,它不起作用。我收到一个错误:
错误异常 未定义变量:数据(查看: C:\my-project\resources\views\components\footer-main.blade.php)
完成这项工作的正确方法是什么?我知道我可能在这里遗漏了一些 Laravel 继承概念,但我还不知道。
【问题讨论】:
标签: php laravel view components