ExtJS JSON Store Class Posted On 2008/07/09 23:15, Filed Under WEB/ExtJS
ExtJS 그리드를 만들때마다 store 를 작성해야 하는데,
헤더랑 포맷 맞추기가 귀찮다.
필드와 데이터만 넣어주면 ExtJS 예제에 나오는 형식과 같은 형식으로 배열을 만들어준다.

<?php     /**      * EXTJS JSON STORE Formatting Class      */     class ExtStore {         /**          * json 으로 출력하기 위한 데이터          */         private $_data = array();                 /**          * 데이터의 fields 목록          */         private $_fields = array();                 /**          * 데이터 fields 수          */         private $_fields_count = 0;                 /**          * 클래스 생성자.          * json 출력 데이터의 헤더를 설정한다.          *          * @return void          */         public function __construct() {             $this->_data['metaData']['totalProperty'] = 'results';             $this->_data['metaData']['root'] = 'rows';             $this->_data['metaData']['id'] = 'id';             $this->_data['metaData']['fields'] = array();             $this->_data['results'] = 0;             $this->_data['rows'] = array();         }                 /**          * id, fields 를 설정한다.          *          * @param string $name - 값을 저장하기 위한 식별자          * @param string $data - 클래스 내부의 변수에 지정할 데이터          * @return void          */         private function __set( $name, $data ) {             switch( $name ) {                 case 'id':                     $this->_data['metaData']['id'] = $data;                 break;                                 case 'fields':                     $this->_data['metaData']['fields'][]['name'] = $data;                     $this->_fields[] = $data;                                         $this->_fields_count++;                 break;             }         }                 /**          * ext로 출력하기 위한 배열을 받아 형식에 맞추어 저장한다.          * 배열은 2차 배열 키가 fields 에 등록한 값과 같아야 한다.          *          * @param array $data - 실제 데이터 배열          * @return void          */         public function data( $data ) {             if (is_array($data) === true) {                 $iDataLength = count( $data );                                 $this->_data['results'] = $iDataLength;                                 for ($iLoop = 0; $iLoop < $iDataLength; $iLoop++) {                     for ($iLoopSub = 0; $iLoopSub < $this->_fields_count; $iLoopSub++) {                         $field = $this->_fields[$iLoopSub];                                                 $this->_data['rows'][$iLoop][$field] = $data[$iLoop][$field];                     }                 }             }         }                 /**          * 등록된 데이터를 json 으로 인코딩하여 반환한다.          *          * @return string $JSON_DATA          */         public function display() {             $JSON_DATA = json_encode( $this->_data);                         return $JSON_DATA;         }     } ?>
2008/07/09 23:15 2008/07/09 23:15

Total: 123324 (Today: 131, Yesterday: 188)

RSS