Lumen 視圖

2021-09-15 14:40 更新

1、基本使用

視圖包含服務(wù)于應(yīng)用的HTML并將應(yīng)用的控制器邏輯和表現(xiàn)邏輯進(jìn)行分離。視圖文件存放在resources/views目錄。

下面是一個簡單視圖:

<!-- 該視圖存放 resources/views/greeting.php -->

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

這個視圖存放在resources/views/greeting.php,我們可以在全局的幫助函數(shù)view中這樣返回它:

$app->get('/', function ()    {
    return view('greeting', ['name' => 'James']);
});

傳遞給view方法的第一個參數(shù)是resources/views目錄下相應(yīng)的視圖文件的名字,第二個參數(shù)是一個數(shù)組,該數(shù)組包含了在該視圖中所有有效的數(shù)據(jù)。在這個例子中,我們傳遞了一個name變量,在視圖中通過執(zhí)行echo將其顯示出來。

當(dāng)然,視圖還可以嵌套在resources/views的子目錄中,用“.”號來引用嵌套視圖,比如,如果視圖存放路徑是resources/views/admin/profile.php,那我們可以這樣引用它:

return view('admin.profile', $data);

判斷視圖是否存在

如果需要判斷視圖是否存在,可調(diào)用不帶參數(shù)的view之后再使用exists方法,如果視圖在磁盤存在則返回true

if (view()->exists('emails.customer')) {
    //
}

調(diào)用不帶參數(shù)的view時,將會返回一個Illuminate\Contracts\View\Factory實例,從而可以調(diào)用該工廠的所有方法。

1.1 視圖數(shù)據(jù)

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

在上述例子中可以看到,我們可以簡單通過數(shù)組方式將數(shù)據(jù)傳遞到視圖:

return view('greetings', ['name' => 'Victoria']);

以這種方式傳遞數(shù)據(jù)的話,$data應(yīng)該是一個鍵值對數(shù)組,在視圖中,就可以使用相應(yīng)的鍵來訪問數(shù)據(jù)值,比如<?php echo $key; ?>。除此之外,還可以通過with方法添加獨立的數(shù)據(jù)片段到視圖:

$view = view('greeting')->with('name', 'Victoria');

在視圖間共享共享數(shù)據(jù)

有時候我們需要在所有視圖之間共享數(shù)據(jù)片段,這時候可以使用視圖工廠的share方法,通常,需要在服務(wù)提供者的boot方法中調(diào)用share方法,你可以將其添加到AppServiceProvider或生成獨立的服務(wù)提供者來存放它們:

<?php

namespace App\Providers;

class AppServiceProvider extends ServiceProvider
{
    /**
     * 啟動所有應(yīng)用服務(wù)
     *
     * @return void
     */
    public function boot()
    {
        view()->share('key', 'value');
    }

    /**
     * 注冊服務(wù)提供者
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號