[精讚] [會員登入]
621

[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] 輸出EXCEL的最簡易方法 輸出EXCEL最簡易方法,就沒要求太多了

PHP 數字加解密函式 自寫的數字加解密,勉強用

[PHP] preg_match 的貪婪和不貪婪比對 在php preg_match中預設是採用貪婪比對,太貪婪反而不符合需要,因此得採用「非貪婪比對」...

設定Google analytics API #2 -- PHP的程式安裝和撰寫 讓你的網站能夠存取你的Google analytics上面的資料

[PHP] 判斷程式是從CLI、本地網路或是網際網路端執行的方法 PHP利用IP判斷程式是從CLI、本地網路或是網際網路端執行的方法

[Centos 6& 7] 安裝php-geoip php-geoip是PHP由domain、ip查詢城市國家資料非常強的函式

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

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

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

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

正則表達式:Email名稱防止連續輸入點(.)及下底線(_) Email的名稱中要允許特殊符號,但又不允許連續出現的正則表達式

[大型機台] 熱血高校躲避球 多少少年時光歲月耗在這個遊戲上,二十幾年前的那個時光,唯一想做的事就是把吃飯錢省下來拿去打一場五塊錢的電動,就算是沒錢也