Laravel 4 在路线中包含多个视图


Laravel 4 include multiple views in route

是否可以在路由中包含多个视图?执行此操作的最佳实践是什么,假设我希望配置文件、页眉、内容和页脚文件在视图中联接和加载?如果在路由中执行此操作,那么我可以根据路由请求轻松更改内容。

谢谢。

你需要进一步看看拉拉维尔的刀锋模板。 使用刀片模板,您可以创建布局并将它们很好地级联到彼此上。 例如,让我们采取以下路线...

应用/路由.php

Route::get('about', function()
{
    return View::make('about');
});
Route::get('contact', function()
{
    return View::make('content')
});

如您所见,对于这两个不同的请求,我们有两种不同的视图。 但是,使用刀片模板和部分,我们可以创建主布局,并且仅更改所需的内容。 因此,这是我们的主布局的外观。

app/views/layouts/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来接受内容并将其放置在那里。 这就是我们的实际观点从路线.php发挥作用的地方。

app/views/about.blade.php

@extends('layouts.master')
@section('content')
    <p>This is the about me content.</p>
@endsection

我们可以简单地扩展主布局,并将我们的内容放在content部分中,我们可以在其中命名任何我们想要的东西。 与其他页面相同,请联系。

app/views/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#including-sub-views

<div>
@include('templates.header') // views/templates/header.blade.php
<form>
    <!-- Form Contents -->
</form>