[精讚] [會員登入]
1345

[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判斷對方瀏覽器語系 多語系的網頁應該主動偵查瀏覽器的語系,配合使用者跳出合適的語系。

[PHP7] 利用Memcached 儲存 Session Memcached+ PHP7,利用Memcached 儲存 Session。

[PHP] 台灣身分證號及檢查程式 台灣身分證號及PHP檢查程式

[PHP] 使用FTP PHP 上使用 FTP 的寫法

[PHP]解決ksort新增的SORT_NATURAL|SORT_FLAG_CASE方法 php>=5.4中ksort函數多了SORT_NATURAL 和 SORT_FLAG_CASE 旗標,對舊版的PHP中要怎麼辦?

[PHP] 解析二進位圖片 使用php來解析png圖片,把資料寫在16進位格式

隨機好文

HP SAS硬碟leds燈號說明 HP SAS硬碟leds燈號(hp g7/g6系統適用)說明

Linux shell 的date表示法 linux下SHELL中的date表示法

[札記] 2016.7~12月札記 札記,只是札記

為什麼要重造輪子? 什麼輪子?造什麼輪子?我為什麼要重造輪子?

[PHP]解決ksort新增的SORT_NATURAL|SORT_FLAG_CASE方法 php>=5.4中ksort函數多了SORT_NATURAL 和 SORT_FLAG_CASE 旗標,對舊版的PHP中要怎麼辦?