如何在Laravel中使用@extends
@section
@yield
帮助共享所有网页的数据?例如,有1个控制器。它显示所有新闻,所有评论,所有用户。该控制器继承主层(layouts.app
)。如何让所有其他页面继承此数据?
如何使other.blade.php页面包含来自main.blade.php页面的数据?一个简单的例子:
// layouts.app.blade.php
<!DOCTYPE html>
<head>
...
</head>
<body>
@yield('one')
@yield('two')
@yield('content')
</html>
//main.blade.php
@extends('layouts.app')
@section('one')
// dynamic content
@endsection
@section('two')
// dynamic content
@endsection
//other.blade.php
@extends('layouts.app')
@section('content')
// dynamic content
@endsection
答案 0 :(得分:0)
回答有关如何共享组件数据的问题,您可以阅读有关刀片模板的Laravel docs:
将其他数据传递给组件
有时您可能需要将其他数据传递给组件。对于 这个原因,你可以传递一个数据数组作为第二个参数 @component指令。所有数据都将提供给 组件模板作为变量:
@component('alert',['foo'=&gt;'bar']) ... @endcomponent
示例:
@extends('view', ['data_1' => 1, 'data_2' => 2])
OR
@include('view', ['title'=> 'Example of include'])
关于你的刀片结构问题,我会这样做:
// layouts.app.blade.php
<!DOCTYPE html>
<head>
...
</head>
<body>
@yield('one')
@yield('two')
@yield('content')
</html>
//main.blade.php
@extends('layouts.app')
@section('one')
// dynamic content
@endsection
@section('two')
// dynamic content
@endsection
@include('other.blade.php', ["data" => 'your_data'])
//other.blade.php
@section('content')
// dynamic content
@endsection
这个问题取决于您的应用程序,刀片结构可能会有很大差异,因此可能需要回答这么广泛的问题。