laravel自定義模板指令-tojs

Blade 允許你自定義命令搭独,你可以使用 directive 方法注冊(cè)命令。當(dāng) Blade 編譯器遇到該命令時(shí),它將會(huì)帶參數(shù)調(diào)用提供的回調(diào)函數(shù)敦姻。blade模板可以通過directive方法來自定義模板指定,

tojs指令主要用于PHP自定義一些數(shù)據(jù)轉(zhuǎn)換為js對(duì)象方便js調(diào)用

1.創(chuàng)建ToJsServiceProvider

<?php

namespace App\Providers;

use App\Helpers\ToJs\ToJs;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class ToJsServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('tojs', function () {
            return new ToJs();
        });

        /*
        * The block of code inside this directive indicates
        * the chosen javascript variables.
        */
        Blade::directive('tojs', function () {
            return '<script> window.Laravel = ' . json_encode(app('tojs')->get()) . '</script>';
        });
    }
}

2. ToJs方法主要是對(duì)數(shù)組的一些操作

<?php

namespace App\Helpers\ToJs;

use Illuminate\Support\Arr;

class ToJs
{
    protected $data = [];

    public function put(array $data)
    {
        foreach ($data as $key => $value) {
            $this->data[$key] = value($value);
        }

        return $this;
    }

    public function get($key = null, $default = null)
    {
        if (!$key) return $this->data;

        return Arr::get($this->data, $key, $default);
    }

    public function forget($keys)
    {
        Arr::forget($this->data, $keys);

        return $this;
    }
}

3.聲明facade


namespace App\Helpers\ToJs\Facades;

use Illuminate\Support\Facades\Facade;


class ToJsFacade extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return 'tojs';
    }
}

4.在config數(shù)組添加serviceProvider

providers 添加
\App\Providers\ToJsServiceProvider::class

aliases 添加
'ToJs' => \App\Helpers\ToJs\Facades\ToJsFacade::class,

5.為了方便調(diào)用可以在寫一個(gè)helper方法

if (!function_exists('to_js')) {
    /**
     * Access the javascript helper.
     */
    function to_js($key = null, $default = null)
    {
        if (is_null($key)) {
            return app('tojs');
        }

        if (is_array($key)) {
            return app('tojs')->put($key);
        }

        return app('tojs')->get($key, $default);
    }
}

在PHP代碼需要的地方調(diào)用 to_js(['username'=>'test']);

blade模板直接通過 @tojs 就可以在頁面渲染出
<script> window.Laravel = {"username":"test"}</script>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末餐禁,一起剝皮案震驚了整個(gè)濱河市末盔,隨后出現(xiàn)的幾起案子游盲,更是在濱河造成了極大的恐慌链峭,老刑警劉巖励饵,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甜滨,死亡現(xiàn)場(chǎng)離奇詭異捂敌,居然都是意外死亡逆济,警方通過查閱死者的電腦和手機(jī)莱褒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事宇色。” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵妈倔,是天一觀的道長捧挺。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么遏匆? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任撕瞧,我火速辦了婚禮胖替,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裙戏。我一直安慰自己,他們只是感情好稠曼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布耍共。 她就那樣靜靜地躺著比藻,像睡著了一般哄辣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天奢赂,我揣著相機(jī)與錄音,去河邊找鬼霉晕。 笑死捞奕,一個(gè)胖子當(dāng)著我的面吹牛常拓,可吹牛的內(nèi)容都是我干的渐溶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼懊亡,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逾柿,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤父腕,失蹤者是張志新(化名)和其女友劉穎斥难,沒想到半個(gè)月后竞阐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫁艇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡论皆,死狀恐怖点晴,靈堂內(nèi)的尸體忽然破棺而出陪竿,到底是詐尸還是另有隱情屠橄,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站贮匕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏刻盐。R本人自食惡果不足惜劳翰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乙墙。 院中可真熱鬧,春花似錦听想、人聲如沸马胧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽威彰。三九已至,卻和暖如春崔列,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赵讯。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工边翼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人组底。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓债鸡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親厌均。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容