[精讚] [會員登入]
1241

[PHP] codeignitor4+ smarty4

這篇整合 php 的framework codeignitor4 + smarty4。

分享此文連結 //n.sfs.tw/16028

分享連結 [PHP] codeignitor4+ smarty4@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2022-12-27 21:23:52 最後編修
2022-12-27 15:23:18 By 張○○
 

 

因為升級成 Codeignitor4(以下全稱為ci4) 加上習慣使用 smarty4,因此在 view表上決定使用 smarty4(以下皆稱smarty)。

程式碼來源於[1],有小部分修改。

異動的檔案有三個,在app/目錄下

├── Config
│   ├── Services.php  <== 註記服務
├── Libraries
│   └── CI4Smarty.php  <== 叫用smarty物件
├── ThirdParty
    └── smarty <== smarty4裝在這裡
        ...
        └── libs
            ├── Autoloader.php  <== 讀取此檔即可

在writable/目錄下建立兩個可寫入的目錄

└── writable
    ├── cache
    ├── templates_c

 

Config/Services.php

<?php

namespace Config;

use CodeIgniter\Config\Services as CoreServices;
use CodeIgniter\Config\BaseConfig;
use Config\App;
use App\Libraries\CI4Smarty;

require_once SYSTEMPATH . 'Config/Services.php';

class Services extends CoreServices
{
    public static function SmartyEngine($getShared = true){
        return ($getShared === true ? static::getSharedInstance('SmartyEngine') : new CI4Smarty());
    }
};

 

Libraries/CI4Smarty.php

<?php

namespace App\Libraries;

require_once APPPATH.'ThirdParty/smarty/libs/Autoloader.php';

use \Smarty_Autoloader;

Smarty_Autoloader::register();

use \Smarty;

class CI4Smarty extends Smarty {

    public function __construct()
    {
        parent::__construct();
        parent::setTemplateDir(APPPATH . 'Views/');
        parent::setCompileDir(WRITEPATH . 'templates_c/')->setCacheDir(WRITEPATH . 'cache/');
        parent::setLeftDelimiter('{{');
        parent::setRightDelimiter('}}');
    }

    public function view($tpl_name) {
        parent::display($tpl_name);
    }
}

設定寫入暫存檔目錄及cache,同時設定smart標記左右符號。

 

Controller 中叫用

service('SmartyEngine')->assign('ip',$ip)->assign('isipv6',  $isipv6);
service('SmartyEngine')->view('smarty_template.tpl');

SmartyEngine 預設採用靜態方式載入,如果想要創建新的 SmartyEngine,可寫成:

service('SmartyEngine',false);

結論是透過網友的幫忙,smarty+ci4 整合的不錯,也不難,祝大家使用愉快。

 

參考資料

[1] https://forum.codeigniter.com/thread-76323.html

END

你可能感興趣的文章

[PHP+ci4] codeignitor4+ smarty5 這篇整合 php 的framework codeignitor4 + smarty5。

[PHP] 輸出EXCEL的最簡易方法 輸出EXCEL最簡易方法,就沒要求太多了

[PHP] 將UTF8中文字轉成10進位或16進位數值 原本為了處理 preg_match 中文字的問題[2],用php把中文字轉換成10進位和6進位的數值編碼

[PHP] 類別中要怎麼使用callback function 召回函數(回呼函數)? 在類別中使用標準函數,若其中的callback 函數也是在類別中,該怎麼使用?

PHP cli 傳入參數 php cli (PHP命令列的傳入參數使用方法

利用 php 木馬作為駭客攻擊的手法 利用 php 木馬作為駭客攻擊的手法

隨機好文

談借錢 人借錢時手心向上頭向下,人還錢時手心向下頭向上

[jQuery] select 元件的取值及給值 html中的元件select,在jquery中要如何使用?

[Freebsd] 定時測試 ADSL 是否斷線並重連 中華電信 ADSL 雖有固定 ip,可是他卻會不定時「斷線」, 使用以下的 方法可以定時測試是否斷線,以及重新撥接。

TFTP Server 安裝及使用 讓設備的網路設定檔或是韌體經由TFTP拷備出來,操作的方法

外匯課程經驗 有天遇到某個朋友的正妹朋友,說她有個很棒的外匯投資課程,要我們去聽,只收場地費200大洋。她又說續效最差一個月也有1%,誰還在苦哈哈上班?