Использование Codeigniter с модульными расширениями и Smarty - PullRequest
1 голос
/ 17 августа 2011

Я работаю над системой Bravenewignition от Jasonayre и хочу добавить этот проект Smarty.Что я могу сделать для совместного использования системы HMVC и Smarty?

1 Ответ

1 голос
/ 05 января 2012

Ну, я сделал это всего несколько дней назад, это шаг к интеграции системы Smarty.

  1. Загрузите Smarty из http://www.smarty.net/download
  2. Поместите папку smarty в application / third_party
  3. Создайте файл smarty.php в приложении / библиотеке и вставьте этот

    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: извините за отступ

Теперь вы можете использоватьsmarty с $ this-> load-> library ('smarty') или автоматически загрузите его, добавив smarty к $ autoload в файле конфигурации.

Надеюсь, это поможет!^^

...