Laravel 模板继承

Laravel 模板继承

主页面布局

主页面布局定义了所有网页的通用布局。所有的Web应用都有主页面布局来定义所有网页的通用布局。Blade模板引擎定义了可以由所有网页扩展的主布局。主页面布局位于 /resources/views/layouts/ 目录中。

让我们通过一个示例来了解。

  • 首先,在 resources/views/ 目录下创建名为’ layout ‘的文件夹。
  • 现在,在布局文件夹中创建一个新文件’ master.blade.php ‘。
  • 我们在 master.blade.php 文件中添加以下代码。

master.blade.php

<html>
<head>
<title> Master Page Layout </title>
</head>
<body>
<div class="container">
@yield('content')
</div>
@yield('footer')
</body>
</html>

在上面的代码中,我们使用了@yield指令。@yield用于显示内容。@yield(‘content’)显示’content’的内容,而@yield(‘footer’)显示页脚的内容。

扩展主布局

  • 现在我们要在contact.blade.php文件中扩展上面的主布局,如下所示:

Contact.blade.php

@extends('layout.master')
@section('content')
<h1>Contact Page </h1> 
@stop

在上面的代码中,我们使用了 @extends 指令。 ‘@extends’指令用于继承在 contact.blade.php 文件中的blade布局。’@section(‘content’)’定义了内容的部分。

  • 现在,在 web.php 文件中添加以下路由。
Route::get('/contact', function () {
    return view('contact');
});

输出

Laravel 模板继承

我们还可以在 contact.blade.php 文件中添加javascript代码。假设我在 contact.blade.php 文件中添加了以下代码。

@section('footer')
<script> alert("Hello JavaTpoint") </script>    
@stop

在上面的代码中,我创建了一个警告框,显示消息” 你好JavaTpoint “。

输出结果

Laravel 模板继承

让我们来看一个blade模板的另一个例子。

  • 我们创建一个名为 post.blade.php 的新文件。

post.blade.php

@extends('layout.master')
@section('content')
<h1>Post Page:</h1>
<h2>id is :{{id}}<br> Password is :{{password}}<br>Name is : {{$name}}</h2>
@stop

上面的代码定义了显示id、password和name值的内容部分。

  • 现在,我们创建一个名为 PostController.php 的控制器。

PostController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostController extends Controller
{
    //
 public function show_post(id,password,$name)
{
  return view('post',compact('id','password','name'));
}}

PostController.php 文件中,我们定义了一个名为 show_post() 的新函数,该函数将数据传递给 post.blade.php 文件。

  • 最后,在 web.php 文件中定义了一个路由。

    web.php

Route::get('/post/{id}/{password}/{name}','PostController@show_post');

输出

Laravel 模板继承

到目前为止,我们已经看到post.blade.phpcontact.blade.php两个文件都继承了主文件布局。 这是主布局的主要优势,每个文件都可以扩展主文件的布局并添加自己的功能。

使用@parent指令

@parent指令的作用是显示在主布局中定义的部分的内容。

让我们通过一个例子来理解。

  • 首先,我们创建一个主文件。

    master.blade.php

<html>
<head>
<title> Master Page Layout </title>
</head>
<body>
<div class="container">
@yield('content')
</div>
@section('footer')
This is footer 
@show
</body>
</html>
  • 现在,我们创建 contact.blade.php 文件,该文件扩展了上述的 master.blade.php 文件。
@extends('layout.master')
@section('content')
<h1>Contact Page</h1>
@stop 
@section('footer')
@parent
<p>this is appended</p>
@stop

在上述代码中, @parent 指令将段落内容添加到页脚部分。

输出结果

Laravel 模板继承

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程