編程學(xué)習(xí)網(wǎng) > PHP技術(shù) > laravel > laravel框架及thinkphp框架超級(jí)簡(jiǎn)單的公共文件引入
2021
07-06

laravel框架及thinkphp框架超級(jí)簡(jiǎn)單的公共文件引入

為什么要把兩個(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í)資料

Python編程學(xué)習(xí)

查 看2022高級(jí)編程視頻教程免費(fèi)獲取