鍍金池/ 教程/ PHP/ Laravel視圖
Laravel操作數(shù)據(jù)庫
Laravel會(huì)話(session)
Laravel文件上傳
Laravel Cookie
Laravel Facades
Laravel應(yīng)用程序結(jié)構(gòu)
Laravel響應(yīng)
Laravel插入數(shù)據(jù)庫表數(shù)據(jù)
Laravel錯(cuò)誤處理
Laravel環(huán)境安裝配置
Laravel本地化
Laravel Ajax
Laravel路由
Laravel錯(cuò)誤和日志記錄
Laravel檢索查詢數(shù)據(jù)
Laravel更新數(shù)據(jù)
Laravel刪除數(shù)據(jù)
Laravel表單處理
Laravel中間件
Laravel控制器
Laravel驗(yàn)證
Laravel安全
Laravel請(qǐng)求
Laravel發(fā)送郵件
Laravel重定向
Laravel教程
Laravel配置
Laravel事件處理
Laravel視圖

Laravel視圖

理解視圖

在MVC框架中,字母“V”代表視圖(Views)。它分離了應(yīng)用程序邏輯并展現(xiàn)邏輯。視圖文件存儲(chǔ)在 resources/views目錄。一般來說,視圖是包含了應(yīng)用程序的HTML。

示例

第1步 - 復(fù)制下面的代碼,并將其保存在 resources/views/test.php

<html>
   <body>
      <h1>Hello, World</h1>
   </body>
</html>
第2步- 添加下面一行在 app/Http/routes.php 文件,為上述視圖設(shè)置路由。

app/Http/routes.php

Route::get('/test', function(){
   return view('test');
});
第3步 - 請(qǐng)?jiān)L問以下網(wǎng)址查看視圖的輸出。

http://localhost:8000/test

第4步 - 輸出結(jié)果如下面所示。

將數(shù)據(jù)傳遞到視圖

當(dāng)構(gòu)建應(yīng)用程序時(shí),可能需要將數(shù)據(jù)傳遞到視圖。傳遞一個(gè)數(shù)組到視圖助手函數(shù)。傳遞一個(gè)數(shù)組后,我們可以使用它的鍵在HTML文件中來獲得鍵對(duì)應(yīng)的值。

示例

第1步 - 復(fù)制下面的代碼,并將其保存在 resources/views/test.php

<html>
   <body>
      <h1><?php echo $name; ?></h1>
   </body>
</html>
第2步- 添加下面一行在 app/Http/routes.php 文件,為上述視圖設(shè)置路由。

app/Http/routes.php

Route::get('/test', function(){
   return view('test',[‘name’=>’Yiibai’]);
});
第3步 - 鍵name的值將被傳遞到test.php文件,并且$name將由這個(gè)值替換。
第4步 - 請(qǐng)?jiān)L問以下網(wǎng)址查看視圖的輸出。

http://localhost:8000/test

第5步 - 如下面輸出結(jié)果。

所有視圖數(shù)據(jù)共享

我們已經(jīng)看到如何能夠?qū)?shù)據(jù)傳遞給視圖,但有時(shí),有必要將數(shù)據(jù)傳遞到所有的視圖。Laravel使得這更簡(jiǎn)單。有一個(gè)叫作 “share()” 方法,該方法可以用于這一目的。share() 方法帶有兩個(gè)參數(shù),key和value。通常 share() 方法可以從服務(wù)提供者的啟動(dòng)方法被調(diào)用。我們可以使用任何服務(wù)提供者,AppServiceProvider或我們自己的服務(wù)提供者。

示例

第1步 - 添加下面一行到文件 - app/Http/routes.php。

app/Http/routes.php

Route::get('/test', function(){
   return view('test');
});
Route::get('/test2', function(){
   return view('test2');
}); 

第2步-創(chuàng)建兩個(gè)視圖文件-test.php和test2.php的代碼相同。以下是兩個(gè)文件,這將共享數(shù)據(jù)。將以下代碼復(fù)制到這兩個(gè)文件中。resources/views/test.php & resources/views/test2.php

<html>
   <body>
      <h1><?php echo $name; ?></h1>
   </body>
</html> 

第3步- 更改啟動(dòng)方法的代碼在文件 - app/Providers/AppServiceProvider.php 如下所示. 
(在這里,我們使用了共享方法,而且我們通過與所有的視圖共享數(shù)據(jù)。) app/Providers/AppServiceProvider.php

<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {
   
   /**
   * Bootstrap any application services.
   *
   * @return void
   */

   public function boot(){
      view()->share('name', 'Yiibai');
   }

   /**
   * Register any application services.
   *
   * @return void
   */

   public function register(){
      //
   }
}
第4步 - 請(qǐng)?jiān)L問以下網(wǎng)址。

http://localhost:8000/test

http://localhost:8000/test2

第5步 - 輸出結(jié)果如下所示。

Blade模板

Blade是一個(gè)簡(jiǎn)單,為L(zhǎng)aravel提供的強(qiáng)大模板引擎。Blade是Laravel輕量級(jí)模板語言,它的語法非常簡(jiǎn)單易學(xué)。blade模板包含擴(kuò)展— blade.php 并存儲(chǔ)在目錄 resources/views.

Blade也支持所有PHP的主要構(gòu)造器,創(chuàng)造循環(huán)和條件 — @for, @foreach, @while, @if 和 @elseif, 使您以避免開在模板到處使用<?php標(biāo)記。Blade 模板的主要優(yōu)點(diǎn)是,我們可以設(shè)置主模板,這個(gè)主模板可以被另一個(gè)頁面進(jìn)行擴(kuò)展。

示例

第1步 - 創(chuàng)建一個(gè)主模板,并將其保存在 - resources/views/layouts/master.blade.php.

<html>
   
   <head>
      <title>@yield('title')</title>
   </head>
   
   <body>
      @section('sidebar')
      This is the master sidebar.
      @show
      
      <div class = "container">
         @yield('content')
      </div>
   
   </body>
</html>
步驟2 - 這里,在主模板,
  • @yield('title') 用于顯示的標(biāo)題的值

  • @section('sidebar')用于定義命名側(cè)邊欄部分

  • @show 用于顯示一個(gè)部分內(nèi)容

  • @yield('content') 用于顯示 content 的內(nèi)容

第3步 - 現(xiàn)在,創(chuàng)建另一個(gè)頁面并擴(kuò)展主模板,并將其保存在 - resources/views/page.blade.php

@extends('layouts.master')
@section('title', 'Page Title')

@section('sidebar')
   @parent
      <p>This is appended to the master sidebar.</p>
   @endsection
   
   @section('content')
      <h2>{{$name}}</h2>
      <p>This is my body content.</p>
   @endsection
第4步 - 這里是每個(gè)元素的描述。

@extends('layouts.master') 用于擴(kuò)展主布局?!發(fā)ayouts.master” — 在這里,layouts 是目錄的名稱,在這里我們已經(jīng)存儲(chǔ)在主模板 和 主模板 “master.blade.php”,這里“.master”是指其名字,但這里使用名稱而不帶擴(kuò)展 blade.php

  • @section('title', 'Page Title') ? 設(shè)置的標(biāo)題部分的值

  • @section('sidebar') ? 定義主布局的子頁面?zhèn)冗厵诓糠帧?

  • @parent ? 在主布局定義中顯示側(cè)邊欄部分的內(nèi)容。

  • <p> ? 這是追加到主側(cè)邊欄。</p> 增添一段內(nèi)容到側(cè)邊欄部分

  • @endsection ? 結(jié)束側(cè)邊欄部分。

  • @section('content') ? 定義內(nèi)容部分。

  • @section('content') ? 增添段的內(nèi)容到content 部分。

  • @endsection ? 結(jié)束該內(nèi)容部分。

第5步 - 現(xiàn)在,建立路由查看此模板。添加下面一行到文件 - app/Http/routes.php

Route::get('blade', function () {
   return view('page',array('name' => 'Yiibai'));
});
第6步 - 請(qǐng)?jiān)L問以下網(wǎng)址查看 blade 模板的例子。

http://localhost:8000/blade