一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - laravel框架實現為 Blade 模板引擎添加新文件擴展名操作示例

laravel框架實現為 Blade 模板引擎添加新文件擴展名操作示例

2020-07-08 15:24與f PHP教程

這篇文章主要介紹了laravel框架實現為 Blade 模板引擎添加新文件擴展名操作,結合實例形式詳細分析了laravel框架Blade 模板引擎添加新文件擴展名具體操作步驟與相關實現技巧,需要的朋友可以參考下

本文實例講述了laravel框架實現為 Blade 模板引擎添加新文件擴展名。分享給大家供大家參考,具體如下:

因為一些原因,我準備把 Blessing Skin 的框架換成 Laravel 了(之前是自己搭建的一個框架),但是在模板遷移的時候遇到了一點問題。

之前我是使用的 XiaoLer/blade 這個從 Laravel 中抽離出來的 Blade 模板引擎,并且自定義為使用 .tpl文件后綴。你問為啥不用默認的 .blade.php 而是用這個 Smarty 的模板擴展名?能有啥,好看唄 :-D

不過之前我是直接調用 FileViewFinder 類的 addExtension 方法來添加擴展名的,但是在 Laravel 里就不能這樣了。你總不能在 Illuminate\View 加幾句話吧?

去 Google 搜索了下,沒發現有可以很方便使用的方法(當然是搜的鷹文,說不定是我姿勢不對),就只好自己找了。

首先先從 View Facade 入手,可以看到它是從服務容器中解析出了 view 這個綁定。繼續往下找,打開 Illuminate\View\ViewServiceProvider,看看 View 的服務提供者到底是把啥給綁定到 view 上去了:

?
1
2
3
4
5
6
7
8
9
10
11
public function registerFactory()
{
  $this->app->singleton('view', function ($app) {
    $resolver = $app['view.engine.resolver'];
    $finder = $app['view.finder'];
    $env = new Factory($resolver, $finder, $app['events']);
    $env->setContainer($app);
    $env->share('app', $app);
    return $env;
  });
}

嗯嗯,我們可以看到這是綁定了個 Illuminate\View\Factory 實例,于是我們繼續往下找,看看這個工廠類都有啥方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * Register a valid view extension and its engine.
 *
 * @param string  $extension
 * @param string  $engine
 * @param \Closure $resolver
 * @return void
 */
public function addExtension($extension, $engine, $resolver = null)
{
  $this->finder->addExtension($extension);
  if (isset($resolver)) {
    $this->engines->register($engine, $resolver);
  }
  unset($this->extensions[$extension]);
  $this->extensions = array_merge([$extension => $engine], $this->extensions);
}

哦哦~ 果然我們在工廠類里找到了一個 FileViewFinder::addExtension 的封裝。然而正當我欣喜地準備調用的時候,卻發現這個方法有個神秘的 $engine 參數。

誒?WTF?這尼瑪是啥?( ?_ゝ?)

看了看文檔也沒看出個所以然來,就只好從方法的具體代碼里找找蛛絲馬跡了:

?
1
$this->extensions = array_merge([$extension => $engine], $this->extensions);

哦呀?這一行在 $this->extensions 里加上了一個 [$extension => $engine] 的數組,那么只要我們看看這個數組原先的定義,就可以知道這個 $engine 是個啥子了:

?
1
2
3
4
5
6
/**
 * The extension to engine bindings.
 *
 * @var array
 */
protected $extensions = ['blade.php' => 'blade', 'php' => 'php'];

啊哈,原來這個 $engine 指的是解析 $extension 所使用的引擎!這下一切都水落石出了,如果你在傳入 .tpl 的同時傳入一個 blade 的引擎,就是告訴 Blade,要把以 .tpl 為擴展名的文件用 Blade 模板引擎來解析。

這下一切都簡單了,我們只需要在 AppServiceProvider (或者其他適當的服務提供者)里通過調用 View Facade 就可以非常方便快捷地添加擴展名了:

?
1
View::addExtension('tpl', 'blade');
 

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。

原文鏈接:https://www.cnblogs.com/fps2tao/p/7655492.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91视频国产自拍 | 99国产成人精品2021 | 亚洲激情成人 | 亚洲欧美一区二区三区在线观看 | 果冻传媒天美传媒网址入口 | 欧美不卡一区二区三区免 | 第一次破学生处破 | 日韩欧美a| 操到翻白眼 | 52zfl宅福利yxpjw| 艹出白浆 | 国产91无毒不卡在线观看 | 丝袜护士强制脚足取精 | 男人把j放进女人的p里视频 | 午夜在线a亚洲v天堂网2019 | 亚洲欧美成人综合久久久 | 欧美香蕉视频 | 草莓茄子丝瓜番茄小蝌蚪 | 亚洲四虎 | 亚洲男人的天堂网 | 色婷婷激婷婷深爱五月老司机 | 国产一卡 | 无人区尖叫之夜美女姐姐视频 | 亚洲 欧美 国产 综合 在线 | 精品一区二区高清在线观看 | 2021小妲己永久回家地址 | 欧美xxoo做爰猛烈视频 | 成人亚洲欧美日韩中文字幕 | 国产91一区二区在线播放不卡 | 亚洲视频在线观看不卡 | 99精彩视频| 免费看国产精品久久久久 | 好猛好紧好硬使劲好大刺激视频 | 色综合色狠狠天天综合色hd | 亚洲四虎永久在线播放 | 欧美激情影音先锋 | 亚洲欧美日韩综合在线播放 | 亚洲国产精品牛在线 | 免费在线观看伦理片 | 91xj视频| 精品午夜久久福利大片免费 |