是否可以在路线中包含多个视图?这样做的最佳实践是什么,假设我希望配置文件、页眉、内容和页脚文件加入并加载到视图中?如果在路由中执行,那么我可以根据路由请求轻松更改内容。
谢谢你。
您需要进一步了解 Laravel 的 Blade 模板。使用 Blade 模板,您可以创建布局并将它们很好地级联起来。例如,让我们采取以下路线......
应用程序/routes.php
Route::get('about', function()
{
return View::make('about');
});
Route::get('contact', function()
{
return View::make('content')
});
如您所见,对于这两个不同的请求,我们有两种不同的视图。但是,使用 Blade 模板和部分,我们可以创建主布局并仅更改我们需要的内容。所以,这就是我们的主布局的样子。
应用程序/视图/布局/master.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Site Title</title>
</head>
<body>
<nav>
<ul>
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
</nav>
@yield('content')
</body>
</html>
这是我们的主布局。我们拥有始终保持不变的导航,我们的 HTML 和头部以及我们不想一遍又一遍地编写的所有内容。但是,我们也在yield
刀片中使用来接受内容并将其放置在那里。这就是我们的实际视图从 routes.php 发挥作用的地方。
应用程序/视图/about.blade.php
@extends('layouts.master')
@section('content')
<p>This is the about me content.</p>
@endsection
我们可以简单地扩展主布局,并将我们的内容放在content
部分中,我们可以命名任何我们想要的名称。与其他页面相同,请联系。
应用程序/视图/contact.blade.php
@extends('layouts.master')
@section('content')
<p>This is the contact page content.</p>
@endsection
正如您所看到的,它不仅仅是包含多个视图......而是关于扩展不同的视图并使用 Blade 将它们组合在一起。
在另一个视图中包含页眉/页脚的替代方法如下。
https://laravel.com/docs/5.3/blade#include-sub-views
<div>
@include('templates.header') // views/templates/header.blade.php
<form>
<!-- Form Contents -->
</form>