将 Codeigniter 与模块化扩展和 Smarty 结合使用

发布于 2024-11-29 21:02:49 字数 86 浏览 2 评论 0原文

我正在研究 Jasonayre Bravenewignition 系统,并想添加这个项目 Smarty。 HMVC 系统和 Smarty 一起使用可以做什么?

I am working on Jasonayre bravenewignition system and want to add this project Smarty. What can i do for using a HMVC system and Smarty together?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

庆幸我还是我 2024-12-06 21:02:49

嗯,我几天前就完成了,这就是集成 smarty 系统的步骤。

  1. http://www.smarty.net/download 下载 Smarty
  2. 将 smarty 文件夹放入 application/third_party
  3. < p>在应用程序/库中创建 smarty.php 文件并将其粘贴

    require_once(APPPATH.'third_party/Smarty/libs/Smarty.class.php');
    
    CI_Smarty 类扩展了 Smarty {
    
    受保护的$CI;
    私有$模块;
    
    公共函数 __construct()
    {
        父级::__construct();
    
        // 获取 CI 距离
        $this->CI =&获取实例();
        // 获取调用模块,需要检查其中的视图
        $this->module = $this->CI->router->fetch_module();
    
        // 小路
        $this->setCompileDir(APPPATH . "cache/smarty/compiled");
        $this->setCacheDir(APPPATH . "cache/smarty/cached");
        $this->setTemplateDir(APPPATH . "视图/模板");
    
        // 在我们的视图/模板中使用 $this
        $this->assignByRef('this', $this->CI);
    
        log_message('debug', "Smarty 类已初始化");
    }
    
    公共函数显示($template,$cache_id = null,$compile_id = null,$parent = null){
        // 如果 $template 中没有 .tpl 扩展名,则自动添加 .tpl 扩展名
        if (strpos($template,'.') === FALSE) {
            $模板.='.tpl';
        }
        if ( !empty($this->模块)){
            $模板=应用程序路径。 '模块/' 。 $this->模块。 '/视图/' 。 $模板;
        }
        // 调用原来的smarty函数
        父::显示($template, $cache_id, $compile_id, $parent);
    }
    }
    
    /* Smarty.php 文件结束 */
    /* 位置: ./application/libraries/Smarty.php */
    

ps: 抱歉缩进

现在您可以通过 $this->load->library('smarty') 使用 smarty 或自动加载它将 smarty 添加到配置文件中的 $autoload 中。

希望这有帮助! ^^

Well i did it just some days ago, that's the step for integrating smarty system.

  1. Download Smarty from http://www.smarty.net/download
  2. Put the smarty folder inside application/third_party
  3. Create smarty.php file in application/libraries and paste this

    require_once(APPPATH.'third_party/Smarty/libs/Smarty.class.php');
    
    class CI_Smarty extends Smarty {
    
    protected $CI;
    private $module;
    
    public function __construct()
    {
        parent::__construct();
    
        // get CI istance
        $this->CI =& get_instance();
        // fetch the calling module, need to check for views inside it
        $this->module = $this->CI->router->fetch_module();
    
        // path
        $this->setCompileDir(APPPATH . "cache/smarty/compiled");
        $this->setCacheDir(APPPATH . "cache/smarty/cached");
        $this->setTemplateDir(APPPATH . "views/templates");
    
        // to use $this inside our views/template
        $this->assignByRef('this', $this->CI);
    
        log_message('debug', "Smarty Class Initialized");
    }
    
    public function display ($template, $cache_id = null, $compile_id = null, $parent = null) {
        // automatically add .tpl extension if there is not in $template
        if (strpos($template,'.') === FALSE) {
            $template .= '.tpl';
        }
        if ( !empty($this->module)){
            $template = APPPATH . 'modules/' . $this->module . '/views/' . $template;
        }
        // call the original smarty function
        parent::display($template, $cache_id, $compile_id, $parent);
    }
    }
    
    /* End of file Smarty.php */
    /* Location: ./application/libraries/Smarty.php */
    

ps: sorry for indentation

Now you can use smarty with $this->load->library('smarty') or automatically load it adding smarty to $autoload in the configuration file.

Hope this help! ^^

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文