為什么要把兩個(gè)框架放在一起來(lái)說(shuō)呢?因?yàn)門P5.1.x與laravel實(shí)在是太像了,本文主要講述關(guān)于大家頂部及底部文件引入的問題。但是如果頂部和尾部只是單純的html代碼還好說(shuō),但是里面通常有變量賦值和循環(huán)遍歷以及判斷等邏輯,這樣就帶來(lái)了比較麻煩的事情。
首先講下Laravel框架主要利用AppServiceProvider文件中的boot方法進(jìn)行全局變量分配。也就說(shuō)在boot方法直接加載header模版文件順便分配變量到模版中,那么無(wú)論在其他視圖那個(gè)地方引入這個(gè)公共模版文件都可以直接使用,而不會(huì)報(bào)變量未找到的錯(cuò)誤。
具體操作:
找到app/Providers/AppServiceProvider.php文件,在boot方法中加載公共頭部模版,比如說(shuō):
namespace App\Providers; use Illuminate\Support\ServiceProvider; use DB; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // $res = DB::table("eq_type")->where("ishidden", "=", "1")->get(); //取出分類列表 view()->share(['header' => $res]); //分配變量到頭部公共導(dǎo)航 } /** * Register any application services. * * @return void */ public function register() { // } }
后面就直接在其他視圖成引入頭部導(dǎo)航文件即可
@include("template/default/header")OK,那么ThinkPHP能用這種方式嗎?NO!雖然他們很像,但是也不是真的一模一樣好吧,TP框架除了5.1新出的layout可以嘗試達(dá)到類似效果,還有一個(gè)延續(xù)3.2版本下來(lái)的好東西,也是接下來(lái)要講的分層控制器,利用分層控制器機(jī)制來(lái)實(shí)現(xiàn)widget,也就是在模版中調(diào)用分層控制器,常規(guī)的路由是無(wú)法訪問到的,相比了解Yii框架的朋友都熟悉這個(gè)吧,就是掛件功能的概念。首先,我們需要在模塊目錄下新建一個(gè)widget目錄(與controller目錄同級(jí)目錄),然后在里面新建控制器header(表示這是頭部的文件),然后在index方法下寫如下代碼:
重點(diǎn)1:不能使用助手函數(shù)view直接渲染模版,否則掛件失敗!
重點(diǎn)2:$this->fetch(); 千萬(wàn)不要以為里面不寫模版路徑,系統(tǒng)會(huì)自動(dòng)幫你默認(rèn),那是不可能的!必須寫對(duì)應(yīng)的視圖路徑!
<?php namespace app\Admin\widget; use think\Controller; class header extends Controller { public function index() { $this->assign('title','添加賬戶'); //分配變量 return $this->fetch('admin/header'); //渲染模版 } }
在其他視圖層使用:
{:widget('header/index')}
其中header是widget目錄下的控制器,index是控制器下的方法!
以上就是“l(fā)aravel框架及thinkphp框架超級(jí)簡(jiǎn)單的公共文件引入”的詳細(xì)內(nèi)容,想要獲取更多laravel教程歡迎關(guān)注編程學(xué)習(xí)網(wǎng)
掃碼二維碼 獲取免費(fèi)視頻學(xué)習(xí)資料
- 本文固定鏈接: http://phpxs.com/post/8203/
- 轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載必須在正文中標(biāo)注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費(fèi)視頻資料