校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > laravel多視圖共享數(shù)據(jù)實例代碼

laravel多視圖共享數(shù)據(jù)實例代碼

熱門標簽:合肥ai電銷機器人費用 凱立德地鐵站地圖標注 溫州外呼系統(tǒng)招商 手機外呼系統(tǒng)什么原理 滄州電銷外呼系統(tǒng)價格 銀行信貸電話機器人 天津電銷外呼系統(tǒng)違法嗎 400電話個人能不能辦理 上海400客服電話怎么申請

前言

在做項目中,網(wǎng)站前臺或者后臺有些數(shù)據(jù)需要在多個視圖頁面使用,例如用戶基本信息數(shù)據(jù),菜單展示數(shù)據(jù)。首先想到的是在每個控制器里傳入這些需要的數(shù)據(jù),但顯然這并不科學。經(jīng)查視圖文檔了解,可以使用視圖間共享數(shù)據(jù)和視圖Composer解決。

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

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

?php

namespace App\Providers;

class AppServiceProvider extends ServiceProvider
{
    /**
     * 啟動所有應用服務
     *
     * @return void
     */
    public function boot()
    {
        view()->share('name', 'dashuai');
    }

    /**
     * 注冊服務提供者
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

在各視圖中使用 $name 即可調(diào)用。

視圖Composer

視圖Composer 是當視圖被渲染時的回調(diào)或類方法。如果你有一些數(shù)據(jù)要在視圖每次渲染時都做綁定,可以使用視圖 Composer 將邏輯組織到一個單獨的地方。

首先要在服務提供者中注冊視圖 Composer,我們將會使用輔助函數(shù) view 來訪問 Illuminate\Contracts\View\Factory 的底層實現(xiàn),記住,Laravel 不會包含默認的視圖 Composer 目錄,我們可以按照自己的喜好組織其路徑,例如可以創(chuàng)建一個 App\Http\ViewComposers 目錄:

?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * 在容器中注冊綁定.
     *
     * @return void
     * @author http://laravelacademy.org
     */
    public function boot()
    {
        // 使用基于類的composers...
        view()->composer(
            'profile', 'App\Http\ViewComposers\ProfileComposer'
        );

        // 使用基于閉包的composers...
        view()->composer('dashboard', function ($view) {
        });
    }

    /**
     * 注冊服務提供者.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

如果創(chuàng)建一個新的服務提供者來包含視圖 Composer 注冊,需要添加該服務提供者到配置文件 config/app.php 的 providers 數(shù)組中。

現(xiàn)在我們已經(jīng)注冊了 Composer,每次 profile 視圖被渲染時都會執(zhí)行 ProfileComposer@compose,接下來我們來定義該 Composer 類:

?php

namespace App\Http\ViewComposers;

use Illuminate\Contracts\View\View;
use Illuminate\Users\Repository as UserRepository;

class ProfileComposer
{
    /**
     * 用戶倉庫實現(xiàn).
     *
     * @var UserRepository
     */
    protected $users;

    /**
     * 創(chuàng)建一個新的屬性composer.
     *
     * @param UserRepository $users
     * @return void
     */
    public function __construct(UserRepository $users)
    {
        // Dependencies automatically resolved by service container...
        $this->users = $users;
    }

    /**
     * 綁定數(shù)據(jù)到視圖.
     *
     * @param View $view
     * @return void
     */
    public function compose(View $view)
    {
        $view->with('count', $this->users->count());
    }
}

視圖被渲染前,Composer 類的 compose 方法被調(diào)用,同時 Illuminate\Contracts\View\View 被注入該方法,從而可以使用其 with 方法來綁定數(shù)據(jù)到視圖。

添加 Composer 到多個視圖

你可以傳遞視圖數(shù)組作為 composer 方法的第一個參數(shù)來一次性將視圖 Composer 添加到多個視圖:

view()->composer(
    ['profile', 'dashboard'],
    'App\Http\ViewComposers\MyViewComposer'
);

composer 方法接受 * 通配符,從而允許將一個 Composer 添加到所有視圖:

view()->composer('*', function ($view) {
    //
});

總結

到此這篇關于laravel多視圖共享數(shù)據(jù)的文章就介紹到這了,更多相關laravel多視圖共享數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Laravel框架實現(xiàn)多個視圖共享相同數(shù)據(jù)的方法詳解

標簽:溫州 金華 赤峰 洛陽 怒江 酒泉 七臺河 白城

巨人網(wǎng)絡通訊聲明:本文標題《laravel多視圖共享數(shù)據(jù)實例代碼》,本文關鍵詞  laravel,多,視圖,共享,數(shù)據(jù),;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《laravel多視圖共享數(shù)據(jù)實例代碼》相關的同類信息!
  • 本頁收集關于laravel多視圖共享數(shù)據(jù)實例代碼的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 元阳县| 和硕县| 江阴市| 五大连池市| 铜鼓县| 鹿邑县| 报价| 新河县| 景洪市| 枝江市| 安阳县| 札达县| 乌鲁木齐县| 长子县| 嘉义市| 扶绥县| 兰西县| 达尔| 井冈山市| 大同县| 绵阳市| 金华市| 昂仁县| 额济纳旗| 合川市| 盐山县| 龙南县| 余庆县| 岳普湖县| 盐源县| 柞水县| 阿合奇县| 陈巴尔虎旗| 阿鲁科尔沁旗| 扎囊县| 阿克苏市| 上思县| 永州市| 长兴县| 吉木萨尔县| 眉山市|