>  기사  >  백엔드 개발  >  Yii 프레임워크의 강력한 분류 트리 확장 공유

Yii 프레임워크의 강력한 분류 트리 확장 공유

WBOY
WBOY원래의
2016-07-25 08:48:14858검색
'; foreach ($this->dataKey as $v) { if ($this->formatParam == $v) $str = '{$strSep}'; else $str = ''; $html 。 = ''; } $html .= ''; 回傳$html ; }
  • /**
  • * 테이블 열 이름 가져오기
  • * @return 문자열
  • */
  • 공용 함수 getTableHead(){
  • $html = '
  • ';
  • foreach($this->tableHead as $v )
  • $html .= '
  • ';
  • $html .= '
  • ';
  • $html 반환 ;
  • }
  • /**
  • * 테이블 형식으로 트리 가져오기
  • * @return 문자열
  • */
  • 공용 함수 getTable() {
  • $this->strItem = $this->getItemName();
  • $strRe = '
  • 두 가지 유형의 분류 트리 형식, 테이블 및 드롭다운 상자 형태의 트리 구조 제공
    테이블 및 드롭다운 상자의 스타일을 사용자 정의하고, 형식화된 데이터로 사용되는 매개변수 열을 사용자 정의하고, 계층 관계를 사용자 정의할 수 있습니다. 매개변수 및 사용자 정의 테이블 열 이름을 정의하고 시간 형식도 설정합니다.
    이 모든 작업이 자동으로 수행될 수 있습니다. 마음에 든다면 좋아요를 눌러주세요... Yii 프레임워크의 강력한 분류 트리 확장 공유 Yii 프레임워크의 강력한 분류 트리 확장 공유
    1. 호출 메소드
    2. 테이블 메소드 호출
    3. widget('ext.tree.widgets.TreeWidget',array(
    4. ' dataProvider' => $dataProvider, // 데이터 전달
    5. 'pid' => 'pid', // 상위 ID 설정
    6. 'tableClass' => ', // 테이블 스타일
    7. 'formatParam' => 'name', // 형식화된 필드 설정
    8. 'formatTime' => array( // 형식화된 시간 매개변수 설정
    9. 'created'
    10. ),
    11. 'action' => array(
    12. array(
    13. 'label' => 'Edit', // 링크 이름
    14. 'url' => array(
    15. 'edit') => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 연결 생성
    16. ),
    17. 'urlParams' => 'id','name'), // URL 다음에 전달되어야 하는 매개변수 필드를 설정합니다.
    18. ),
    19. array(
    20. 'label' => 'Add', // 링크 이름
    21. 'url' => array(
    22. 'add' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 연결 생성
    23. 🎜> ),
    24. 'urlParams' => array('id','name'), // URL 뒤에 전달되어야 하는 매개변수 필드를 설정합니다
    25. ),
    26. ),
    27. 'tableHead' => array( // 테이블 컬럼 헤더 정보 설정
    28. 'Category ID',
    29. 'Channel',
    30. '중국어 이름',
    31. '영문 이름',
    32. '이니셜 문자',
    33. '정렬',
    34. '분류수준',
    35. '부모ID',
    36. '생성시간',
    37. '작업',
    38. ),
    39. ) ); ?>
    40. 드롭다운 상자 모드
    41. widget('ext.tree.widgets.TreeWidget',array(
    42. 'dataProvider' => ; $cate, // 데이터 전달
    43. 'pid' => 'pid', // 상위 ID 설정
    44. 'formatParam' => 'name', // 서식 필드 설정
    45. 'treeType' => ; false, // 출력 트리 형식
    46. 'selectClass' => 'class="span11"', // 드롭다운 상자 스타일 설정
    47. 'defaultSelectValue' => box
    48. 의 기본값과 옵션은 0, '1차 열로 ל'
    49. ),
    50. )) ?>
    코드 복사
    데이터를 찾을 수 없습니다.
  • 코드 복사
    1. /*
    2. * 이 템플릿을 변경하려면 도구 | 템플릿
    3. * 편집기에서 템플릿을 엽니다.
    4. */
    5. /**
    6. * 트리 설명
    7. *
    8. * @author Wang Jiacheng
    9. * @email 819434425@qq.com
    10. *
    11. * 전달된 배열 형식, 연관 배열은
    12. 일 수 있습니다. * * 배열
    13. (
    14. 0 => 배열
    15. (
    16. 'id' => '7'
    17. 'zone' => '의류'
    18. '이름' = > '의류'
    19. 'ename' => '난좡'
    20. '첫 번째' => 'l'
    21. 'sort_order' => 1'
    22. 'pid' => '6'
    23. 'created' => '0'
    24. )
    25. )
    26. *
    27. * 테이블 모드 호출
    28. < ?php $this->widget('ext.tree.widgets.TreeWidget',array(
    29. 'dataProvider' => $dataProvider, // 데이터 전달
    30. 'pid' => 'pid', // 상위 ID 설정
    31. 'tableClass' => 'items table table-striped table-bordered table-densed', // 테이블 스타일
    32. 'formatParam' => 'name', // 서식 설정 필드
    33. ' formatTime' => array( // 형식화된 시간 매개변수 설정
    34. 'created'
    35. ),
    36. 'action' => array(
    37. array(
    38. 'label' => 'Edit' , // 링크 이름
    39. 'url' => array(
    40. 'edit' => 'Yii::app()->controller->createUrl( "/manage/taosearch/createProduct") ', // 연결 생성
    41. ),
    42. 'urlParams' => array('id','name'), // URL 다음에 전달되어야 하는 매개변수 필드를 설정합니다
    43. ),
    44. array(
    45. 'label' => '추가', // 링크 이름
    46. 'url' => array(
    47. 'add' => 'Yii: :app()-> ;controller->createUrl("/manage/taosearch/createProduct")', // 연결 생성
    48. ),
    49. 'urlParams' => array('id','name '), // url
    50. ),
    51. ),
    52. 'tableHead' => array( // 테이블 열 헤더 정보 설정
    53. 'Category ID',
    54. ' 뒤에 전달되어야 하는 매개변수 필드 채널',
    55. '한자이름',
    56. '영문이름',
    57. '이니셜',
    58. '정렬',
    59. '분류등급',
    60. '부모ID',
    61. '생성 시간',
    62. '작업',
    63. ),
    64. )) ?>
    65. *
    66. * 드롭다운 박스 모드에서 호출
    67. * < ?php $this->widget('ext.tree.widgets.TreeWidget',array(
    68. 'dataProvider' => $cate, // 데이터 전달
    69. 'pid' => 'pid', // 상위 ID 설정
    70. 'formatParam' => 'name', // 서식 필드 설정
    71. 'treeType' => false, // 출력 트리 형식
    72. 'selectClass' => ' class="span11 "', // 드롭다운 박스의 스타일 설정
    73. 'defaultSelectValue' => array( // 드롭다운 박스의 기본값과 옵션 설정
    74. 0, 1차로 'EMA 열 ל'
    75. ),
    76. )) ?>
    77. */
    78. class TreeWidget 확장 위젯 {
    79. /**
    80. * CArrayDataProvider 데이터 객체 또는 배열 데이터
    81. * 매개변수를 수신하는 구성요소 데이터(연관 배열)
    82. * @var 객체 배열
    83. * /
    84. 공개 $dataProvider;
    85. /**
    86. * 데이터 수신 할당
    87. * @var type
    88. */
    89. 공개 $arrAll = array();
    90. /**
    91. * 키 이름이 _ID인 다차원 관계
    92. * @var 유형
    93. */
    94. public $arrIdRelation = array();
    95. /**
    96. * _ID를 키 이름으로 기반으로 다차원 관계 단순화, 트리 다이어그램 출력에 사용
    97. * @var 유형
    98. */
    99. public $arrIdRelationSimple = array();
    100. /**
    101. * 원본 데이터를 키 이름이 _ID인 배열로 변환합니다.
    102. * @var type
    103. */
    104. public $arrIdAll = array();
    105. /**
    106. * 모든 부모-자식 관계
    107. * @var 유형
    108. */
    109. public $arrIdSon = array();
    110. /**
    111. * 리프 노드의 _ID
    112. * @var 유형
    113. */
    114. 공개 $arrIdLeaf = array();
    115. /**
    116. *루트 노드의 _ID
    117. * @var 유형
    118. */
    119. 공개 $arrIdRoot = array();
    120. /**
    121. * 每个节点下的子孙后代_ID
    122. * @var type
    123. */
    124. public $arrIdChildren = array();
    125. /**
    126. * 每個節點回逆到根
    127. * @var type
    128. */
    129. public $arrIdBackPath = array();
    130. > /**
    131. * 輸出樹的結構
    132. * @var type
    133. */
    134. public $strItem = '
      gt;{$strSep}{$name}';
    135. /**
    136. * 設定表格樣式
    137. * @var type
    138. */
    139. public $tableClass = 'items table table-striped table-bordered table-condensed';
    140. /**
    141. * 資料欄位參數陣列
    142. * @var type
    143. */
    144. public $dataKey = array();
    145. / **
    146. * 指定需要格式化的欄位
    147. * @var type
    148. */
    149. public $formatParam = 'name';
    150. /**
    151. * 表格列名稱
    152. * @var type
    153. */
    154. public $tableHead = array();
    155. / **
    156. * 父 ID
    157. * @var 型態
    158. */
    159. public $pid = 'pid';
    160. /**
    161. * 指定樹的類型
    162. * true 表格類型樹
    163. * false 下拉框類型樹
    164. * @var type
    165. */
    166. public $treeType = true;
    167. /**
    168. * 綁定下拉框value值
    169. * @var type
    170. */
    171. public $optionValue = 'id';
    172. /**
    173. * 格式化時間
    174. * @var type
    175. */
    176. public $formatTime = array();
    177. /**
    178. * 下拉框樣式
    179. * @var type
    180. */
    181. public $selectClass = 'class="span3"';
    182. /**
    183. * 設定下拉框的預設值和選項
    184. * @var type
    185. */
    186. public $defaultSelectValue = array(
    187. 0,'≡作為一級欄目≡',
    188. );
    189. /**
    190. * 設定下拉框是否多選
    191. * true 多選
    192. * false 單選
    193. * @var type
    194. */
    195. public $isMultiple = false;
    196. * 綁定到下拉框的預設值
    197. * @var type
    198. */
    199. public $isMultiple = false;
    200. /**
    201. * 操作列
    202. * @var type
    203. */
    204. public $bindSelectValue = 0;
    205. /**
    206. * 運行
    207. */
    208. public $action = array();
    209. /**
    210. * 運行
    211. * @param 型態 $datas
    212. * @return 型別
    213. */
    214. public function run() {
    215. if (is_array($this->dataProvider) && count($this->dataProvider) > 0 )
    216. $data = $this->_run($this->dataProvider);
    217. else if (is_object($this->dataProvider) && count($this->dataProvider->rawData) > 0)
    218. $data = $this->_run($this->dataProvider->rawData);
    219. $this->render('tree' , array('data'=>$data));
    220. }
    221. /**
    222. * 取得html
    223. * @return type
    224. * @param type $datas
    225. * @return 類型
    226. */
    227. private function _run($datas){
    228. foreach ($datas as $data) {
    229. if (!empty($this ->動作) && count($this->action) > 0) {
    230. foreach ($this->action as $key => $action) {
    231. $k = array_keys($ action['url']) ;
    232. $data[$k[0]] = '';
    233. }
    234. }
    235. $this->arrAll[] = $data;
    236. $this->dataKey = array_keys( $數據);
    237. }
    238. $this->processData();
    239. if ($this->treeType === true)
    240. $data = $this->getTable ();
    241. else
    242. $data = $this->getSelect($this->pid, $this->bindSelectValue, $this->isMultiple, $this->selectClass, $this ->defaultSelectValue);
    243. return $data;
    244. }
    245. /**
    246. * 設定分層欄位
    247. * 表格類型
    248. * @return string
    249. */
    250. public function getHtml() { return $this->genHtml(); /***/ public function getItemName(){ $html = '
  • '.$str.'{$'.$v.'}
    '.$v.'
    ';
  • $strRe .= '
  • '.$this->getTableHead().'< ;/thead>';
  • $strRe .= $this->genHtml();
  • $strRe .= '
  • ';
  • return $strRe;
  • }
  • /**
  • * 드롭다운 박스 형태로 트리 가져오기
  • * @param type $strName
  • * @param array $arrValue
  • * @param type $blmMulti
  • * @param type $ strExt
  • * @param 유형 $arrFirst
  • * @return 문자열
  • */
  • 공개 함수 getSelect($strName = 'tree', $arrValue = array(), $blmMulti = false, $strExt = '', $arrFirst = null) {
  • !is_array($arrValue) && $arrValue = array($arrValue);
  • foreach ($this->arrIdAll as $strTemp => $arrTemp) {
  • $this->arrIdAll[$strTemp]['selected'] = '';
  • if (in_array($arrTemp['id'], $arrValue)) {
  • $this->arrIdAll[$strTemp]['selected'] = ' selected="selected"';
  • }
  • }
  • $this->strItem = '<옵션 값= "{$'.$this->optionValue.'}"{$selected} title="{$'.$this->formatParam.'}">{$strSep}{$'.$this-> ;formatParam.'}';
  • $strRe = '