提供兩種方式的分類樹格式,表格和下拉框形式的樹形結構 可以自訂表格和下拉框的樣式,自訂以哪一列的參數為格式化數據,自訂層級關係參數,自定義表格列名稱,也可以設定時間的格式化。 這一切都可以幫你自動搞定,如果大家覺得好,別忘了點個讚呦...
- 呼叫方式
- 表格方式呼叫
- widget('ext.tree.widgets.TreeWidget',array(
- 'dataProvider' => $dataProvider, // 傳遞資料
- 'pid' => 'pid', // 設定父ID
- 'tableClass' => 'items table table-striped table-bordered table-condensed', //表格樣式
- 'formatParam' => 'name', // 設定格式化欄位
- 'formatTime' => array( // 設定格式化的時間參數
- 'created'
- ),
- 'action' => array(
- array(
- 'label' => '編輯', // 連結名稱
- 'url' => array(
- 'edit' => 'Yii ::app()->controller->createUrl("/manage/taosearch/createProduct")', // 產生連線
- ),
- 'urlParams' => array('id','name') , // 設定url後面需要傳遞的參數欄位
- ),
- array(
- 'label' => '新增', // 連結名稱
- 'url' => array(
- 'add' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 產生連線
- ),
- 'urlParams' => array(' id','name'), // 設定url後面需要傳遞的參數欄位
- ),
- ),
- 'tableHead' => array( // 設定表格列頭資訊
- '分類ID',
- '頻道',
- '中文名',
- '英文名',
- '首字母',
- '排序',
- '分類等級',
- '父ID',
- '創建時間',
- '操作',
- ),
- )); ?>
-
- 下拉框方式
-
widget('ext.tree.widgets.TreeWidget',array(
- 'dataProvider' => $cate, // 傳遞資料
- 'pid' => 'pid', // 設定父ID
- 'formatParam' => 'name', // 設定格式化欄位
- 'treeType' => false, // 輸出樹格式
- 'selectClass' => 'class="span11"', / / 設定下拉框樣式
- 'defaultSelectValue' => array( // 設定下拉框的預設值與選項
- 0 , '≡ 作為一級欄位≡'
- ),
- )); ? >
複製程式碼
- /*
- * 若要變更此模板,請選擇「工具」|「」模板
- * 並在編輯器中打開模板。
- */
-
- /**
- * Description of Tree
- *
- * @author 汪嘉誠
- * @email 819434425@qq.com
- *
- * 傳遞的數組格式,關聯數組就可以
- * * array
- (
- 0 => array
- (
- 'id' => '7'
- 'zone' => '服裝'
- 'name' => '服裝'
- 'ename' => 'nanzhuang'
- 'first' => 'l'
- 'sort_order' => '8'
- 'level' => '1'
- 'pid' => '6'
- 'created' => '0'
- )
- )
- *
- * 表格方式呼叫
- widget('ext. tree.widgets.TreeWidget',array(
- 'dataProvider' => $dataProvider, // 傳遞資料
- 'pid' => 'pid', // 設定父ID
- 'tableClass' => ' items table table-striped table-bordered table-condensed', // 表格樣式
- 'formatParam' => 'name', // 設定格式化欄位
- 'formatTime' => array( // 設定格式化的時間參數
- 'created'
- ),
- 'action' => array(
- array(
- 'label' => '編輯', // 連結名稱
- 'url ' => array(
- 'edit' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 產生連線
- ),
- 'urlParams' => array('id','name'), // 設定url後面需要傳遞的參數欄位
- ),
- array(
- 'label' => '新增', //連結名稱
- 'url' => array(
- 'add' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 產生連線
- ),
- 'urlParams' => array('id','name'), // 設定url後面需要傳遞的參數欄位
- ),
- ),
- 'tableHead' = > array( // 設定表格列頭資訊
- '分類ID',
- '頻道',
- '中文名稱',
- '英文名',
- '首字母',
- '排序',
- '分類等級',
- '父ID',
- '建立時間',
- '操作',
- ),
- )); ?>
- *
- * 下拉框方式呼叫
- * widget('ext.tree.widgets.TreeWidget',array(
- 'dataProvider' => $cate, //傳遞資料
- 'pid' => 'pid', // 設定父ID
- 'formatParam' => 'name', // 設定格式化欄位
- 'treeType' => false, // 輸出樹狀格式
- 'selectClass' => 'class="span11"', // 設定下拉框樣式
- 'defaultSelectValue' => array( // 設定下拉方塊的預設值與選項
- 0 , ' ≡ 作為一階欄位≡'
- ),
- )); ?>
- */
- class TreeWidget extends Widget {
- /**
- * CArrayDataProvider 資料物件或陣列資料
- * 元件資料接收參數(關聯數組)
- * @var Object || array
- * /
- public $dataProvider;
-
- /**
- * 賦值接收資料
- * @var type
- */
- public $arrAll = array();
-
- /**
- * 按_ID作鍵名的多維關係
- * @var type
- */
- public $arrIdRelation = array();
-
- public $arrIdRelation = array();
-
- /**
- * 按_ID作鍵名的多維關係的簡化,用來輸出樹狀圖
- * @var type
- */
- public $arrIdRelationSimple = array();
-
- /**
- * 將原始資料轉換成的_ID作鍵名的陣列
- * @var type
- */
- public $arrIdAll = array();
-
- public $arrIdAll = array();
-
-
- /**
- * 所有的父子關係
- * @var type
- */
- public $arrIdSon = array();
-
- /**
- * 葉子節點的_ID
- * @var type
- */
- public $arrIdLeaf = array();
-
- /**
- * 根節點的_ID
- * @var type
- */ public $arrIdRoot = array(); /** * 每個節點下的子孫後代_ID* @var type
- */
- public $arrIdChildren = array();
-
- /**
- * 每個節點回逆到根
- * @var type
- */
- public $arrIdBackPath = array();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- > /**
- * 輸出樹的結構
- * @var type
- */
- public $strItem = '
gt;{$strSep}{$name}';
-
- /**
- * 設定表格樣式
- * @var type
- */
- public $tableClass = 'items table table-striped table-bordered table-condensed';
-
- /**
- * 資料欄位參數陣列
- * @var type
- */
- public $dataKey = array();
-
- / **
- * 指定需要格式化的欄位
- * @var type
- */
- public $formatParam = 'name';
-
- /**
- * 表格列名稱
- * @var type
- */
- public $tableHead = array();
-
- / **
- * 父 ID
- * @var 型態
- */
- public $pid = 'pid';
-
- /**
- * 指定樹的類型
- * true 表格類型樹
- * false 下拉框類型樹
- * @var type
- */
- public $treeType = true;
-
- /**
- * 綁定下拉框value值
- * @var type
- */
- public $optionValue = 'id';
-
- /**
- * 格式化時間
- * @var type
- */
- public $formatTime = array();
-
- /**
- * 下拉框樣式
- * @var type
- */
- public $selectClass = 'class="span3"';
-
- /**
- * 設定下拉框的預設值和選項
- * @var type
- */
- public $defaultSelectValue = array(
- 0,'≡作為一級欄目≡',
- );
-
- /**
- * 設定下拉框是否多選
- * true 多選
- * false 單選
- * @var type
- */
- public $isMultiple = false;
- * 綁定到下拉框的預設值
- * @var type
- */
- public $isMultiple = false;
-
-
- /**
- * 操作列
- * @var type
- */
- public $bindSelectValue = 0;
-
- /**
- * 運行
- */
- public $action = array();
-
-
- /**
- * 運行
- * @param 型態 $datas
- * @return 型別
- */
- public function run() {
- if (is_array($this->dataProvider) && count($this->dataProvider) > 0 )
- $data = $this->_run($this->dataProvider);
- else if (is_object($this->dataProvider) && count($this->dataProvider->rawData) > 0)
- $data = $this->_run($this->dataProvider->rawData);
-
-
- $this->render('tree' , array('data'=>$data));
- }
-
- /**
- * 取得html
- * @return type
- * @param type $datas
- * @return 類型
- */
- private function _run($datas){
- foreach ($datas as $data) {
- if (!empty($this ->動作) && count($this->action) > 0) {
- foreach ($this->action as $key => $action) {
- $k = array_keys($ action['url']) ;
- $data[$k[0]] = '';
- }
- }
- $this->arrAll[] = $data;
- $this->dataKey = array_keys( $數據);
- }
-
-
- $this->processData();
- if ($this->treeType === true)
- $data = $this->getTable ();
- else
- $data = $this->getSelect($this->pid, $this->bindSelectValue, $this->isMultiple, $this->selectClass, $this ->defaultSelectValue);
-
- return $data;
- }
-
- /**
- * 設定分層欄位
- * 表格類型
- * @return string
- */
- public function getHtml() { return $this->genHtml(); /***/ public function getItemName(){ $html = '
'; foreach ($this->dataKey as $v) { if ($this->formatParam == $v) $str = '{$strSep}'; else $str = ''; $html 。 = ''.$str.'{$'.$v.'} | '; } $html .= ' '; 回傳$html ; }
-
- /**
- * 取得表格列名稱
- * @return string
- */
- public function getTableHead(){
- $html = '
';- foreach($this->tableHead as $v )
- $html .= '
'.$v.' | ';
-
- $html .= '
';
- return $html ;
- }
-
- /**
- * 取得表格形式的樹
- * @return string
- */
- public function getTable() {
- $this->strItem = $this->getItemName();
- $strRe = 'tableClass.'">';
- $strRe .= ''.$this->getTableHead().'
';
- $strRe .= $this->genHtml();
- $strRe .= '
|