이 문서의 내용은 CI 프레임워크(코드 포함)에서의 smarty3 통합 단계에 대한 것입니다. 필요한 친구가 참고할 수 있기를 바랍니다.
1 smarty3을 다운로드하고 libs 파일을 프레임워크 라이브러리 디렉터리에 넣고 이름을 smarty로 바꿉니다.
2 라이브러리 아래에 Ci_smarty.php 파일을 만듭니다. 코드는 다음과 같습니다
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); require_once(APPPATH.'libraries/smarty/Smarty.class.php'); //这里指定Smarty.class.php的存放位置 class Ci_smarty extends Smarty { protected $ci; public function __construct() { parent::__construct(); $this->ci = & get_instance(); $this->ci->load->config('smarty');//加载smarty的配置文件 $this->cache_lifetime =$this->ci->config->item('cache_lifetime'); $this->caching = $this->ci->config->item('caching'); $this->config_dir = $this->ci->config->item('config_dir'); $this->template_dir = $this->ci->config->item('template_dir'); $this->compile_dir = $this->ci->config->item('compile_dir'); $this->cache_dir = $this->ci->config->item('cache_dir'); $this->use_sub_dirs = $this->ci->config->item('use_sub_dirs'); $this->left_delimiter = $this->ci->config->item('left_delimiter'); $this->right_delimiter = $this->ci->config->item('right_delimiter'); } }
3 프레임워크 구성에서 smarty.php를 만듭니다. 디렉토리, 코드는 다음과 같습니다
<?php $config['cache_lifetime'] = 3600;//缓存失效 $config['caching'] = true;//开启缓存 $config['template_dir'] = APPPATH .'views'; $config['compile_dir'] = APPPATH .'views/template_c'; $config['cache_dir'] = APPPATH . 'views/cache'; $config['config_dir'] = APPPATH . 'views/config'; $config['use_sub_dirs'] = false; //子目录变量(是否在缓存文件夹中生成子目录) $config['left_delimiter'] = '{'; $config['right_delimiter'] = '}';
4 구성 파일 autoload.php
$autoload['libraries']=array('ci_smarty');
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!