CI 프레임 워 크 통합 Smarty 의 방법 분석

이 글 의 사례 는 CI 프레임 워 크 가 Smarty 를 통합 하 는 방법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
CI 가 자체 적 으로 가지 고 있 는 템 플 릿 기능 이 편리 하지 않 기 때문에 사람들 은 보편적으로 Smarty 를 통합 하 는 방식 으로 CI 의 부족 함 을 보완 한다.
본인 은 인터넷 에서 많은 CI 통합 Smarty 의 튜 토리 얼 을 보 았 는데,우리 CI 포럼 안의 정수 게시 물 을 포함 합 니 다.
http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=10345。
스스로 이런 교과 과정 을 비교 해 보 았 습 니 다.저 는 아래 의 이 방안 이 모든 중에서 가장 우수 하 다 고 생각 합 니 다.여러분 께 강력 히 추천 합 니 다(물론 제 가 직접 채택 한 방안 이기 도 합 니 다)
출처:
http://www.cnmiss.cn/?p=261
원문 안의 일부 잘못 을 나 는 본문 에서 이미 수정 하 였 다.
다음은 제 가 더 우수 하 다 고 생각 하 는 이 유 를 말씀 드 리 겠 습 니 다.이 방안 과 우리 포럼 의 방안 을 비교 해 보면 이 방안 이 핵심 류 를 확대 한 것 을 발견 할 수 있 습 니 다.
Smarty 클래스 방법 assign 과 display 를 Ci 컨트롤 러 로 확장 하기 때문에 CI 에서 Smarty 를 사용 할 때 이렇게 사용 할 수 있 습 니 다.

public function index()
{
    //$this->load->view('welcome_message');
    $data['title'] = '  ';
    $data['num'] = '123456789';
    //$this->cismarty->assign('data',$data); //    
    $this->assign('data',$data);
    $this->assign('tmp','hello');
    //$this->cismarty->display('test.html'); //    
    $this->display('test.html');
}

핵심 컨트롤 러 류 에 대한 간단 한 확장 을 통 해 CI 에서 Smarty 를 사용 할 때 와 Smarty 를 직접 사용 하 는 용법 습관 이 같다 는 것 이 큰 장점 입 니 다.
그리고 핵심 라 이브 러 리 의 확장 을 보면 이 글 쓴 이 가 CI 프레임 워 크 에 대한 이해 가 매우 좋다 는 것 을 알 수 있다.
이 글 에 따 르 면 저 는 Smaty 를 통합 하 는 데 성 공 했 을 뿐만 아니 라 CI 에 대한 이해 도 한층 강 화 했 습 니 다.
또한 이 방안 은 Smarty 의 프로필 을 CI 프레임 워 크 의 config 디 렉 터 리 에 두 었 고 이들 에 대해 모두 규범 적 으로 사용 되 었 습 니 다.
결국'CI 와 스 매 티 의 빈 틈 없 는 결합'이 이 뤄 졌 다.
다음은 구체 적 인 튜 토리 얼 입 니 다.
CI 버 전:2.1.4//
Smarty 버 전:Smarty-2.6.26//저 는 이 버 전 을 사 용 했 기 때문에 자신의 사용 습관 을 고려 하기 위해 최신 Smarty 버 전 을 사용 하지 않 았 습 니 다.확장 원 리 를 이해 하고 원 하 는 Smartry 버 전 을 선택 할 수 있 습 니 다.
1.해당 사이트 에 가서 Smarty 의 소스 패 키 지 를 다운로드 합 니 다./저 는 여기 Smarty-2.6.26 을 쓰 고 있 습 니 다.
2.소스 패키지 에 있 는 libs 폴 더 를 CI 프로젝트 디 렉 터 리 아래 libraries 폴 더 에 복사 하고 Smarty-2.6.26 로 이름 을 바 꿉 니 다./
3.프로젝트 디 렉 터 리 의 libraries 폴 더 에 새 파일 Cismarty.php 를 만 듭 니 다.그 내용 은 다음 과 같 습 니 다.

<?php
if(!defined('BASEPATH')) EXIT('No direct script asscess allowed');
require_once( APPPATH . 'libraries/Smarty-2.6.26/libs/Smarty.class.php' );
class Cismarty extends Smarty {
  protected $ci;
  public function __construct(){
    $this->ci = & get_instance();
    $this->ci->load->config('smarty');//  smarty     
    //        
    $this->template_dir  = $this->ci->config->item('template_dir');
    $this->complie_dir  = $this->ci->config->item('compile_dir');
    $this->cache_dir   = $this->ci->config->item('cache_dir');
    $this->config_dir   = $this->ci->config->item('config_dir');
    $this->template_ext  = $this->ci->config->item('template_ext');
    $this->caching    = $this->ci->config->item('caching');
    $this->cache_lifetime = $this->ci->config->item('lefttime');
  }
}

4.프로젝트 디 렉 터 리 의 config 폴 더 에 새 파일 smarty.php 파일 을 만 듭 니 다.그 내용 은 다음 과 같 습 니 다.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['theme']    = 'default';
$config['template_dir'] = APPPATH . 'views';
$config['compile_dir'] = FCPATH . 'templates_c';
$config['cache_dir']  = FCPATH . 'cache';
$config['config_dir']  = FCPATH . 'configs';
$config['template_ext'] = '.html';
$config['caching']   = false;
$config['lefttime']   = 60;

5.입구 파일 이 있 는 디 렉 터 리 에 새 폴 더 templatesc、cache、configs;
6.프로젝트 디 렉 터 리 아래 config 디 렉 터 리 에서 autoload.php 파일 찾기
이 항목 을 수정 하 다

$autoload['libraries'] = array('Cismarty');
//   :      ,    ,              

7.프로젝트 디 렉 터 리 의 core 폴 더 에 새 파일 MYController.php 내용 은 다음 과 같 습 니 다./핵심 제어 클래스 확장

<?php if (!defined('BASEPATH')) exit('No direct access allowed.');
class MY_Controller extends CI_Controller { //       
  public function __construct() {
    parent::__construct();
  }
  public function assign($key,$val) {
    $this->cismarty->assign($key,$val);
  }
  public function display($html) {
    $this->cismarty->display($html);
  }
}

배치 완료
사용 방법 인 스 턴 스:
컨트롤 러 에서 다음 과 같이:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends MY_Controller { //       
  public function index()
  {
    //$this->load->view('welcome_message');
    $data['title'] = '  ';
    $data['num'] = '123456789';
    //$this->cismarty->assign('data',$data); //   
    $this->assign('data',$data);
    $this->assign('tmp','hello');
    //$this->cismarty->display('test.html'); //   
    $this->display('test.html');
  }
}

다음 보기:프로젝트 디 렉 터 리 의 views 아래 폴 더 를 시도 합 니 다.
새 파일 test.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{ $test.title}</title> //(     <title>{$test['title']}</title>,      ,     Smarty     )
<style type="text/css">
</style>
</head>
<body>
{$test.num|md5} //         
<br>
{$tmp}
</body>
</html>

더 많은 CodeIgniter 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 이 CodeIgniter 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기