| 제목 | Widget Class 수정 | ||
|---|---|---|---|
| 글쓴이 | 은랑 | 작성시각 | 2015/02/25 19:12:05 | 
| 
                         | 
                |||
| 
                        http://ellislab.com/forums/viewthread/109584/  의 코드를 이용하여 Widget Class 를 사용하던중 약간의 불편함이 발생하여 약간의 수정을 통해서 widget 실행 PHP 파일의 경로를 변경하여 사용할 수 있도록 변경하였습니다. 이미 많은 고수님들이 사용중이실듯 혹 중복이면 관리자님께서 삭제해 주세요..ㅠㅠ 원문 : http://qnfmfmd.tistory.com/58 
_assign_libraries();
    }
     
    function run($name)
    {        
        $args = func_get_args();
         
        ///////////////////////////////////////////////////////////////////
        //
        //  @ 변경전
        //
        //  require_once APPPATH.'/controllers/widgets/'.$name.EXT;
        //
        //
        ///////////////////////////////////////////////////////////////////     
         
        ///////////////////////////////////////////////////////////////////
        //
        //  @ 변경후
         
            $require_path   =   str_replace("//", "/", APPPATH.$name.EXT);
         
         
            if( file_exists($require_path) == false )
            {
                echo "NoFile : ".$require_path;
            }// end if
         
            require_once $require_path;
         
            $arrTemp    =   explode("/", $name);
            $name       = $arrTemp[ count($arrTemp)-1 ];
 
 
        ///////////////////////////////////////////////////////////////////
 
        $name       = ucfirst($name);
         
        $widget = new $name();
        return call_user_func_array(array(&$widget, 'run'), array_slice($args, 1));
    }
     
    function render($view, $data = array()) {
        extract($data);
        include APPPATH.'/views/widgets/'.$view.EXT;
    }
 
    function load($object) {
        $this->$object =& load_class(ucfirst($object));
    }
 
    function _assign_libraries() {
        $ci =& get_instance();
        foreach (get_object_vars($ci) as $key => $object) {
            $this->$key =& $ci->$key;
        }
    }
} 
                        
                     | 
                |||
| 다음글 | 슘님의 커스텀 페이지네이션 라이브러리 CI ver. 3... (4) | ||
| 이전글 | 포럼바로가기 apk (1) | ||
| 
                             
                                ci세상
                                /
                                2015/02/25 23:03:07 /
                                추천
                                0
                             
                            
                                감사합니다. 중복없는데요^^
                             
                         | 
                    
| 
                             
                                한대승(불의회상)
                                /
                                2015/02/26 11:26:33 /
                                추천
                                0
                             
                            
                                좋은 정보 감사 합니다. 
                         | 
                    
| 
                             
                                전상민
                                /
                                2015/02/27 09:10:30 /
                                추천
                                0
                             
                            
                                CI 코드 게시판으로 이동합니다.
                             
                         | 
                    
| 
                             
                                닉
                                /
                                2016/02/24 09:14:55 /
                                추천
                                1
                             
                            저는 php7 + ci3버전인데 요렇게 사용하고 있어요~ 도움되려나 ...; 
<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
define('WIDGET', TRUE);
class Widget {
    function __construct() {
        $this->_assign_libraries();
    }
    public static function run($controller) {
        if (strpos($controller, '.') !== FALSE) {
            list($controller, $method) = explode('.', $controller);
        }
        require_once APPPATH.'controllers/'.$controller.".php";
        // default method
        if (!isset($method)) $method = 'index';
		
        $newArray = explode('/', $controller);
        // class name
        $class = end($newArray);
        unset($newArray);
        if ($class = new $class()) {
            if (method_exists($class, $method)) {
                $args = func_get_args();
                return call_user_func_array(array($class, $method), array_slice($args, 1));
            }
        }
    }
    function _assign_libraries() {
        $CI =& get_instance();
        foreach (get_object_vars($CI) as $key => $object) {
            $this->$key =& $CI->$key;
        }
    }
}
  | 
                    
| 
                             
                                한대승(불의회상)
                                /
                                2016/02/24 10:13:05 /
                                추천
                                0
                             
                            
                                @닉 깔끔 하네요. ^^
                             
                         |