如何使用组件模板将数据从 child 传递到 parent?
How to pass data from child to parent using component templating?
我从 laravel 开始 Laravel8,据我所见,他们正在转向使用组件模板,例如:
<-- layout.blade.php -->
<html>
<body>
{{ $slot }}
</body>
</html>
<-- view.blade.php -->
<x-layout>
<main>Content</main>
</x-layout>
相对于@yield 和@extends 类型模板:
<--layout.blade.php -->
<html>
<body>
@yields('content')
</body
</html>
<-- view.blade.php -->
@extends('layout')
@section('content')
Content
@endsection
现在我正在努力为每页创建动态标题。
<-- views/components/layout.blade.php -->
<html>
<head>
<title>{{ isset($title) ? $title . ' | ' . config('app.name') : config('app.name') }}</title>
</head>
<body>
{{ $slot }}
</body>
</html>
<-- views/articles/index.blade.php -->
<x-layout>
<main>Content</main>
</x-layout>
然后是文章控制器
public function index()
{
$title = 'Articles';
return view('articles.index', [
'articles' => Article::latest('published_at')->filter(request(['search', 'category']))->get(),
'title' => $title,
]);
}
使用较新的“组件模板”样式,如何将 articles/index.blade.php 视图中的 $title 传递给布局组件?这是这种方法的局限性吗?
我看过很多关于如何使用 @yields @extends 方法实现此目的的文章或文章,但如果我采用的方法具备这些功能,我会尽量避免重做我的整个网站。
我想出了解决这个问题的方法。您可以像将数据传递给子组件一样将数据传递给父组件。
<-- views/articles/index.blade.php -->
<x-layout :title="$title">
<main>Content</main>
</x-layout>
允许从子项更新父项。
我从 laravel 开始 Laravel8,据我所见,他们正在转向使用组件模板,例如:
<-- layout.blade.php -->
<html>
<body>
{{ $slot }}
</body>
</html>
<-- view.blade.php -->
<x-layout>
<main>Content</main>
</x-layout>
相对于@yield 和@extends 类型模板:
<--layout.blade.php -->
<html>
<body>
@yields('content')
</body
</html>
<-- view.blade.php -->
@extends('layout')
@section('content')
Content
@endsection
现在我正在努力为每页创建动态标题。
<-- views/components/layout.blade.php -->
<html>
<head>
<title>{{ isset($title) ? $title . ' | ' . config('app.name') : config('app.name') }}</title>
</head>
<body>
{{ $slot }}
</body>
</html>
<-- views/articles/index.blade.php -->
<x-layout>
<main>Content</main>
</x-layout>
然后是文章控制器
public function index()
{
$title = 'Articles';
return view('articles.index', [
'articles' => Article::latest('published_at')->filter(request(['search', 'category']))->get(),
'title' => $title,
]);
}
使用较新的“组件模板”样式,如何将 articles/index.blade.php 视图中的 $title 传递给布局组件?这是这种方法的局限性吗?
我看过很多关于如何使用 @yields @extends 方法实现此目的的文章或文章,但如果我采用的方法具备这些功能,我会尽量避免重做我的整个网站。
我想出了解决这个问题的方法。您可以像将数据传递给子组件一样将数据传递给父组件。
<-- views/articles/index.blade.php -->
<x-layout :title="$title">
<main>Content</main>
</x-layout>
允许从子项更新父项。