laravel 5 實(shí)現(xiàn)模板主題功能
眾所周知,laravel渲染模板是通過View::make()實(shí)現(xiàn)的,需要顯式指定模板文件路徑:
function index()
{
return View::make('index.index');
}
既然這樣,我們就可以自己實(shí)現(xiàn)模板主題功能,我們只需要將模板文件放到一個(gè)主題名稱對(duì)應(yīng)的目錄里就行,比如默認(rèn)主題為 default 的話,我們就這樣寫:
function index()
{
return View::make('default.index.index');
}
自定義主題 custom :
function index()
{
return View::make('custom.index.index');
}
從配置文件中讀取主題名:
function index()
{
return View::make(Config::get('app.theme','default').'.index.index');
}
這樣基本就實(shí)現(xiàn)模板主題化的功能了,但還存在一個(gè)問題,那就是custom主題必須實(shí)現(xiàn)所有default主題的所有模板,否則會(huì)導(dǎo)致某些頁面模板文件不存在報(bào)錯(cuò),那么進(jìn)一步優(yōu)化:
function index()
{
$theme = Config::get('app.theme','default');
$tpl = $theme.'.index.index';
if (!View::exists($tpl)) {
$tpl = 'default.index.index';
}
return View::make($tpl);
}
就是在渲染模板之前,先檢測(cè)模板文件是否存在,不存在的話則使用default主題中對(duì)應(yīng)的模板。
這么多行代碼,我們可以繼續(xù)封裝一下,這時(shí)候要用到Response對(duì)象了,我們知道 Response::view() 等同于 View::make(),而Response還有一個(gè)方法Response::macro()方法可以用來定義一個(gè)宏,我們可以把邏輯封裝到宏里面:
Response::macro('render',function($path,$data=array()){
$theme = Config::get('app.theme','default');
$tpl = $theme.'.'.$path;
if (!View::exists($tpl)) {
$tpl = 'default.' . $path;
}
return Response::view($tpl,$data);
});
使用:
function index()
{
$bindings = array(
'title' => '首頁'
);
return Response::render('index.index',$bindings);
}
需要注意的是傳入模板的變量得通過Response::render的第二個(gè)參數(shù)。
今天的教程就先到這里吧,后續(xù)我們?cè)賮砩钊敕治鲆幌?,希望大家能夠喜歡。
- laravel5.1框架基礎(chǔ)之Blade模板繼承簡(jiǎn)單使用方法分析
- 分享5個(gè)非常有用的Laravel Blade指令
- Laravel 5框架學(xué)習(xí)之Blade 簡(jiǎn)介
- laravel 5 實(shí)現(xiàn)模板主題功能(續(xù))
- Laravel框架基礎(chǔ)語法與知識(shí)點(diǎn)整理【模板變量、輸出、include引入子視圖等】
- Laravel框架Blade模板簡(jiǎn)介及模板繼承用法分析
- Laravel實(shí)現(xiàn)通過blade模板引擎渲染視圖
- PHP的Laravel框架中使用AdminLTE模板來編寫網(wǎng)站后臺(tái)界面
- Laravel框架中Blade模板的用法示例
- Laravel中的Blade模板引擎示例詳解
- Laravel框架之blade模板新手入門教程及小技巧
- Laravel 5.1 框架Blade模板引擎用法實(shí)例分析
相關(guān)文章
php實(shí)現(xiàn)mysql數(shù)據(jù)庫操作類分享
這篇文章主要介紹了php實(shí)現(xiàn)的mysql數(shù)據(jù)庫操作類,本文最后有使用方法,需要的朋友可以參考下2014-02-02變量在 PHP7 內(nèi)部的實(shí)現(xiàn)(二)
在上篇文章給大家介紹了變量在 PHP7 內(nèi)部的實(shí)現(xiàn)(一),本篇繼續(xù)給大家介紹php7內(nèi)部實(shí)現(xiàn)相關(guān)知識(shí),感興趣的朋友通過本篇文章一起學(xué)習(xí)吧2015-12-12PHP獲取網(wǎng)頁標(biāo)題的3種實(shí)現(xiàn)方法代碼實(shí)例
這篇文章主要介紹了PHP獲取網(wǎng)頁標(biāo)題的3種實(shí)現(xiàn)方法,分別使用CURL、file()函數(shù)、file_get_contents實(shí)現(xiàn),需要的朋友可以參考下2014-04-04php 提速工具eAccelerator 配置參數(shù)詳解
php 提速工具eAccelerator 配置參數(shù)詳解,需要的朋友可以參考下。2010-05-05PHP中__get()和__set()的用法實(shí)例詳解
在PHP5中,預(yù)定義了兩個(gè)函數(shù)“__get()”和“__set()”來獲取和賦值其屬性,對(duì)每個(gè)字段進(jìn)行set和get的操作。只需要加上兩個(gè)魔術(shù)方法即可2013-06-06Laravel 5框架學(xué)習(xí)之向視圖傳送數(shù)據(jù)
本文向大家展示的是Laravel5框架學(xué)習(xí)系列的第三篇文章,給大家講解的是如何向視圖傳送數(shù)據(jù),從無到有,十分細(xì)致,有需要的小伙伴可以參考下。2015-04-04