激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 亚洲一区二区观看播放 | 国产精品美女久久久免费 | 多人乱大交xxxxx变态 | 女教师~淫辱の动漫在线 | 国产一区视频免费观看 | 一级大片久久 | 国产草草视频 | 日韩视频区 | 欧美色性 | 日本大片在线播放 | 欧美大穴 | 高清中文字幕在线 | 91久久国产露脸精品免费 | 精品国内视频 | 午夜视频在线免费 | 国产女做a爱免费视频 | 国产精品热 | 91久久久久久久一区二区 | 美国av片在线观看 | zzzzzzzxxxxxx日本人| av在线免费观看播放 | 99在线在线视频免费视频观看 | 国产在线观看福利 | 视频一区二区国产 | 毛片免 | av之家在线观看 | 中国av免费在线观看 | 欧美日韩在线视频一区 | 欧美精品黄色 | 成人午夜精品久久久久久久蜜臀 | 欧美a∨亚洲欧美亚洲 | 黄色一级毛片免费看 | 国产一级毛片高清视频 | xxxx欧美视频| 成年免费大片黄在线观看岛国 | 国产真实孩交 | 韩国三级日本三级香港三级黄 | 在线观看va | 狠狠干网站 | 欧美 日韩 中文 | 久久大陆 |