亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Laravel自定義模板指令小結(jié)

tracymac7 / 2628人閱讀

摘要:模板包含大量的內(nèi)置指令,例如等等,內(nèi)置的指令對(duì)于做一個(gè)簡(jiǎn)單的項(xiàng)目足以,但是當(dāng)你在代碼中編寫(xiě)重復(fù)復(fù)雜的功能時(shí),那么自定義模板指令或許可以幫你優(yōu)化你的視圖結(jié)構(gòu)。

介紹

通常我們?cè)谝晥D模板中編寫(xiě)復(fù)雜的邏輯,看上去顯得很雜亂,那么使用自定義的模板Directives,可以簡(jiǎn)化你的視圖邏輯,編寫(xiě)出更優(yōu)雅的代碼,Laravel Blade是一種將其特殊語(yǔ)法編譯成PHP和HTML的模板引擎。其特殊語(yǔ)法指令,指令是加糖功能,在其后隱藏雜亂的代碼。模板包含大量的內(nèi)置指令,例如@foreach/@if/@section/@extends等等,內(nèi)置的指令對(duì)于做一個(gè)簡(jiǎn)單的項(xiàng)目足以,但是當(dāng)你在代碼中編寫(xiě)重復(fù)復(fù)雜的功能時(shí),那么自定義模板指令或許可以幫你優(yōu)化你的視圖結(jié)構(gòu)。


自定義一個(gè)簡(jiǎn)單的模板指令

$expression參數(shù)是可選的

Blade::directive("directive_name", function ($expression) {
    return $expression;
});

視圖中用法Demo

@hello("World")

聲明自定義模板指令的位置AppServiceProvider.php

";
        });
    }

    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

以這種方式定義的指令加載成功,可以在任何模板中使用


注意事項(xiàng) 第一點(diǎn)

不能直接訪(fǎng)問(wèn)自定義指令中傳遞的多個(gè)參數(shù),需要將其遍歷出來(lái)

@greet("Hi", "Hammad")

Blade::directive("hello", function ($expression) { list($greet, $name) = explode(", ", $expression); return ""; });

像 array() list() 這種并不是一個(gè)函數(shù),而是一種語(yǔ)言結(jié)構(gòu)

第二點(diǎn)

一定要時(shí)刻記住需要過(guò)濾輸出,一般使用{{}}時(shí)候,Blade已經(jīng)預(yù)先執(zhí)行了過(guò)濾操作,為了避免惡意用戶(hù)將js代碼注入到站點(diǎn),一定要轉(zhuǎn)義HTML,可以使用Laravel自帶的函數(shù)e(),也相當(dāng)于htmlentities()

Blade::directive("hello", function ($expression) {
    return "";
});
第三點(diǎn)

每次添加或修改自定義模板指令之后,一定要先清除緩存視圖模板,可以使用clear Artisan

php artisan view:clear

Laravel5.5新特性

在使用自定義的模板指令的時(shí)候,大多數(shù)只是某種形式的條件,這些要求我們需要注冊(cè)三個(gè)獨(dú)立指令,if/else/endif,目前Laravel5.5已經(jīng)支持簡(jiǎn)化條件指令,例如下面的實(shí)例,模板可以使用admin/else/endadmin

public function boot()
{
    Blade::if("admin", function () {
        return auth()->check() && auth()->user()->isAdmin();
    });
}
結(jié)尾說(shuō)明
2017 ending! script maker!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26206.html

相關(guān)文章

  • laravel定義模板指令-tojs

    摘要:允許你自定義命令,你可以使用方法注冊(cè)命令。當(dāng)編譯器遇到該命令時(shí),它將會(huì)帶參數(shù)調(diào)用提供的回調(diào)函數(shù)。 Blade 允許你自定義命令,你可以使用 directive 方法注冊(cè)命令。當(dāng) Blade 編譯器遇到該命令時(shí),它將會(huì)帶參數(shù)調(diào)用提供的回調(diào)函數(shù)。blade模板可以通過(guò)directive方法來(lái)自定義模板指定, tojs指令主要用于PHP自定義一些數(shù)據(jù)轉(zhuǎn)換為js對(duì)象方便js調(diào)用 1.創(chuàng)建T...

    arashicage 評(píng)論0 收藏0
  • 5 個(gè)非常有用的 Laravel Blade 指令,你用過(guò)哪些?

    摘要:接下來(lái)我將帶大家認(rèn)識(shí)下五個(gè)指令,這些指令將讓你在解決特定問(wèn)題時(shí)如虎添翼。如果你是剛接觸的用戶(hù),這些小技巧能帶你認(rèn)識(shí)到模板引擎的便捷與高效。 showImg(https://segmentfault.com/img/remote/1460000015076241); 接下來(lái)我將帶大家認(rèn)識(shí)下五個(gè) Laravel Blade 指令,這些指令將讓你在解決特定問(wèn)題時(shí)如虎添翼。如果你是剛接觸 La...

    stefan 評(píng)論0 收藏0
  • Laravel 模板引擎(Blade)原理簡(jiǎn)析

    摘要:上次提到過(guò),模板引擎一般是要做三件事情變量值的輸出條件判斷和循環(huán)引入或繼承其他文件現(xiàn)在就來(lái)看看的模板引擎是如何來(lái)處理這三件事情的。引擎接下來(lái)就是本文的重點(diǎn)是如何編譯的。如果有興趣的話(huà),也可以實(shí)現(xiàn)一個(gè)自己的模板解析引擎。 上次提到過(guò),模板引擎一般是要做三件事情: 變量值的輸出(echo) 條件判斷和循環(huán)(if ... else、for、foreach、while) 引入或繼承其他文件 ...

    vvpvvp 評(píng)論0 收藏0
  • vue 學(xué)習(xí)小結(jié) 送給新手

    摘要:只要數(shù)據(jù)發(fā)生改變,立即更新,由表單等帶來(lái)的數(shù)據(jù)改變,數(shù)據(jù)相應(yīng)字段也會(huì)發(fā)生相應(yīng)改變。三界面的更新的輸入,導(dǎo)致的值更新,元素內(nèi),任何表達(dá)式與有關(guān)的,都將重新計(jì)算,斌企鵝自動(dòng)更新界面。作為組件化思維的先驅(qū)當(dāng)年統(tǒng)計(jì)的組件多達(dá)多個(gè)。 Vue 是現(xiàn)在最火的前端JavaScript 開(kāi)發(fā)框架。首先,接受它的思想 View 模板即html,靜態(tài)界面Model 數(shù)據(jù)源 模型 界面所有的數(shù)據(jù)負(fù)責(zé)提供及管理...

    terasum 評(píng)論0 收藏0
  • Laravel 5.4 入門(mén)系列 5. 博客通用布局

    摘要:接下來(lái)執(zhí)行遷移即可通用布局通用布局首先是博客首頁(yè),定義路由控制器視圖博客首頁(yè)訪(fǎng)問(wèn)下網(wǎng)站根目錄,顯示博客首頁(yè),框架基本搭建完成了。首先是通用布局通用布局里面除了使用之外,還使用了,用于加載其他模板。 5. 博客的通用布局 初始化 創(chuàng)建控制器、模型、遷移 博客的核心是文章,可以先來(lái)實(shí)現(xiàn)和文章有關(guān)的功能,根據(jù)前幾節(jié)的介紹可知,我們至少需要?jiǎng)?chuàng)建這幾類(lèi): PostsController:控制器...

    xuweijian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<