>  기사  >  백엔드 개발  >  CI 프레임워크에서 smarty3의 통합 단계(코드 포함)

CI 프레임워크에서 smarty3의 통합 단계(코드 포함)

不言
不言앞으로
2018-10-08 14:23:241620검색

이 문서의 내용은 CI 프레임워크(코드 포함)에서의 smarty3 통합 단계에 대한 것입니다. 필요한 친구가 참고할 수 있기를 바랍니다.

1 smarty3을 다운로드하고 libs 파일을 프레임워크 라이브러리 디렉터리에 넣고 이름을 smarty로 바꿉니다.
2 라이브러리 아래에 Ci_smarty.php 파일을 만듭니다. 코드는 다음과 같습니다

<?php  
if ( ! defined(&#39;BASEPATH&#39;)) exit(&#39;No direct script access allowed&#39;);

require_once(APPPATH.&#39;libraries/smarty/Smarty.class.php&#39;);     //这里指定Smarty.class.php的存放位置
class Ci_smarty extends Smarty
{
    protected $ci;
    public function __construct()
    {
        parent::__construct();
        $this->ci = & get_instance();
        $this->ci->load->config(&#39;smarty&#39;);//加载smarty的配置文件
        $this->cache_lifetime =$this->ci->config->item(&#39;cache_lifetime&#39;);
        $this->caching = $this->ci->config->item(&#39;caching&#39;);
        $this->config_dir = $this->ci->config->item(&#39;config_dir&#39;);
        $this->template_dir = $this->ci->config->item(&#39;template_dir&#39;);
        $this->compile_dir = $this->ci->config->item(&#39;compile_dir&#39;);
        $this->cache_dir = $this->ci->config->item(&#39;cache_dir&#39;);
        $this->use_sub_dirs = $this->ci->config->item(&#39;use_sub_dirs&#39;);
        $this->left_delimiter = $this->ci->config->item(&#39;left_delimiter&#39;);
        $this->right_delimiter = $this->ci->config->item(&#39;right_delimiter&#39;);
    }
}

3 프레임워크 구성에서 smarty.php를 만듭니다. 디렉토리, 코드는 다음과 같습니다

<?php
$config[&#39;cache_lifetime&#39;] = 3600;//缓存失效
$config[&#39;caching&#39;] = true;//开启缓存
$config[&#39;template_dir&#39;] = APPPATH .&#39;views&#39;;
$config[&#39;compile_dir&#39;] = APPPATH .&#39;views/template_c&#39;;
$config[&#39;cache_dir&#39;] = APPPATH . &#39;views/cache&#39;;
$config[&#39;config_dir&#39;] = APPPATH . &#39;views/config&#39;;
$config[&#39;use_sub_dirs&#39;] = false; //子目录变量(是否在缓存文件夹中生成子目录)
$config[&#39;left_delimiter&#39;] = &#39;{&#39;;
$config[&#39;right_delimiter&#39;] = &#39;}&#39;;

4 구성 파일 autoload.php

$autoload[&#39;libraries&#39;]=array(&#39;ci_smarty&#39;);

5에서 ci_smarty를 자동으로 로드합니다. 프레임워크의 확장 상위 클래스 MY_Controller.php에 다음 코드를 추가합니다(그렇지 않으면 지금 코어 아래에 생성).

/ * @param $key * @par * smarty assign */
public function assign($key,$val){    
$this->cismarty->assign($key,$val);
}
/**
 * @param $html 
 * smarty smarty display方法 
 */
public function display($html,$is_cache=false){    
if(!$is_cache)  
 {       
 $this->ci_smarty->clearCache($html);    
 }    
$this->ci_smarty->display($html);}
/**
 * smarty清除所有缓存 
 * @author shangshikai 
 */
public function clearAllCache(){  
  $this->ci_smarty->clearAllCache();
  }
/** 
  * smarty 清除某个模板的缓存 
  * @author shangshikai 
  */
  public function clearCache($html){    
  $this->ci_smarty->clearCache($html);
  }
/**
 * @param $html
 * @return mixed
 * smarty判断该模板是否有缓存
 */
public function isCached($html)
{
    return $this->ci_smarty->isCached($html);
}

6 smarty.php 구성 파일에서 캐싱이 활성화되어 있지만 모든 페이지가 캐싱에 적합한 것은 아니므로 MY_Controller에서 표시 방법을 구성할 때 기본적으로 캐시를 삭제해야 하는 페이지를 매개변수를 추가해야 합니다. 캐시된 경우에만 표시 메소드를 호출할 때 두 번째 매개변수를 true로 전달하면 됩니다. 캐시를 사용한 후 로컬에서 캐시할 필요가 없으면 {nocache}{/nocache} 태그 패키지를 사용할 수 있습니다. 태그가 캐시되지 않으면 {와 같이 태그 뒤에 nocache를 추가하는 방법이 있습니다. foreach $arr as $v nocache}

7 프로젝트 전체가 캐싱을 사용하지 않는 경우 smarty에서 $config['cache_lifetime'] = 3600; 줄을 제거할 수 있습니다. MY_Controller

의 표시 메소드에서 두 번째 매개변수와 관련 매개변수를 제거합니다.

위 내용은 CI 프레임워크에서 smarty3의 통합 단계(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제