ホームページ > バックエンド開発 > PHPチュートリアル > Yii フレームワークの強力な分類ツリー拡張機能を共有する

Yii フレームワークの強力な分類ツリー拡張機能を共有する

WBOY
リリース: 2016-07-25 08:48:14
オリジナル
880 人が閲覧しました
< td colspan="4" class="empty">データが見つかりません。
  • コードをコピー
    1. /*
    2. * このテンプレートを変更するには、[ツール] | [ツール] を選択します。テンプレート
    3. * を編集し、エディターでテンプレートを開きます。
    4. */
    5. /**... id' => '7'
    6. 'zone' => '衣服'
    7. 'ename' => 'nanzhuang'
    8. 'l '
    9. 'sort_order' => '8'
    10. 'pid' => '6'
    11. '作成されました' => )
    12. )
    13. * テーブルモード呼び出し
    14. widget('ext.tree.widgets.TreeWidget',array(
    15. 'dataProvider' => $dataProvider, // データを渡す
    16. 'pid' => 'pid' , // 親 ID を設定
    17. 'tableClass' => 'items table table-striped table-bordered table-condensed', // テーブルスタイル
    18. 'formatParam' => 'name', // 書式設定フィールドを設定
    19. 'formatTime' = > array( // フォーマットされた時間パラメータを設定します
    20. 'created'
    21. ),
    22. 'action' => array(
    23. 'label' => 'Edit', // リンク名
    24. 'url' => ; array(
    25. 'edit' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 接続を生成します
    26. ),
    27. 'urlParams' => ; array('id','name'), // URL の後に渡す必要があるパラメータフィールドを設定します
    28. ),
    29. array(
    30. 'label' => 'Add', // リンク名
    31. 'url ' = > array(
    32. 'add' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 接続を生成します
    33. ),
    34. 'urlParams ' = > array('id','name'), // URL の後に渡す必要があるパラメータ フィールドを設定します
    35. ),
    36. ),
    37. 'tableHead' => array( // テーブルの列ヘッダーを設定します情報
    38. 「カテゴリID」、
    39. 「チャンネル」、
    40. 「中国語名」、
    41. 「英語名」、
    42. 「頭文字」、
    43. 「並び替え」、
    44. 「分類レベル」、
    45. 「親ID」、
    46. 「作成」 time',
    47. 'オペレーション ',
    48. ),
    49. )); ?>
    50. *
    51. * ドロップダウン ボックス モードで呼び出されます
    52. * widget('ext.tree.widgets.TreeWidget ',array(
    53. 'dataProvider' = > $cate, // データを渡す
    54. 'pid' => 'pid', // 親 ID を設定する
    55. 'formatParam' => 'name', // 書式設定フィールドを設定する
    56. 'treeType' => false , // 出力ツリー形式
    57. 'selectClass' => 'class="span11"', // ドロップダウンボックスのスタイルを設定
    58. 'defaultSelectValue' => array( // デフォルトを設定ドロップダウン ボックスの値とオプション
    59. 0 , ' ≡ 第 1 レベルの列として ≡'
    60. ),
    61. )); ?>
    62. */
    63. class TreeWidget extends Widget {
    64. /**
    65. * CArrayDataProvider データオブジェクトまたは配列データ
    66. * パラメーターを受け取るコンポーネントデータ (連想配列)
    67. * @var オブジェクト配列
    68. */
    69. public $dataProvider;
    70. /**
    71. * データを受信するための代入
    72. * @var 型
    73. */
    74. public $arrAll = array();
    75. /**
    76. * _ID をキー名とする多次元リレーションシップ
    77. * @var 型
    78. */
    79. public $arrIdRelation = array();
    80. /**
    81. * キー名として _ID を使用した多次元関係の簡略化、ツリー図の出力に使用されます
    82. * @var 型
    83. */
    84. public $arrIdRelationSimple = array();
    85. /**
    86. * 元データを_IDをキー名とした配列に変換
    87. * @var型
    88. */
    89. public $arrIdAll = array();
    90. /**
    91. * すべての親子関係
    92. * @var 型
    93. */
    94. public $arrIdSon = 配列();
    95. /**
    96. *リーフノードの_ID
    97. * @varタイプ
    98. */
    99. public $arrIdLeaf = array();
    100. /**
    101. *ルートノードの_ID
    102. * @varタイプ
    103. */
    104. public $arrIdRoot = array();
    105. /**
    106. * 每个节点下的子孙後代_ID
    107. * @var 型
    108. */
    109. public $arrIdChildren = array();
    110. /**
    111. * 各ノードはルートに戻ります
    112. * @var タイプ
    113. */
    114. public $arrIdBackPath = array();
    115. /**
    116. * 出力ツリー構造
    117. * @var 型
    118. */
    119. public $strItem = '
      {$strSep}{$name}';
    120. /**
    121. * テーブルスタイルを設定します
    122. * @var タイプ
    123. */
    124. public $tableClass = 'items table table-striped table-border table-condensed';
    125. /* *
    126. * データフィールドパラメータ配列
    127. * @var 型
    128. */
    129. public $dataKey = array();
    130. /**
    131. * フォーマットする必要があるフィールドを指定します
    132. * @var type
    133. */
    134. public $formatParam = 'name';
    135. /**
    136. * テーブルの列名
    137. * @var 型
    138. */
    139. public $tableHead = array ();
    140. /**
    141. * 父ID
    142. * @var type
    143. */
    144. public $pid = 'pid';
    145. /**
    146. * ツリーの種類を指定します
    147. * true テーブル型ツリー
    148. * false ドロップダウン ボックス型ツリー
    149. * @var 型
    150. */
    151. public $treeType = true;
    152. /**
    153. * ドロップダウンボックスの値をバインドします
    154. * @var type
    155. */
    156. public $optionValue = 'id';
    157. /**
    158. * フォーマット時間
    159. * @var タイプ
    160. */
    161. public $formatTime = array();
    162. /**
    163. * ドロップダウンボックススタイル
    164. * @var タイプ
    165. */
    166. public $selectClass = 'class="span3"';
    167. /**
    168. * ドロップダウンボックスのデフォルト値とオプションを設定します
    169. * @var type
    170. */
    171. public $defaultSelectValue = array(
    172. 0,'≡ 作として一级栏目 ≡',
    173. );
    174. /**
    175. * ドロップダウンボックスに複数の選択があるかどうかを設定します
    176. * 複数選択の場合は true
    177. * 単一選択の場合は false
    178. * @var type
    179. */
    180. public $isMultiple = false;
    181. /**
    182. * ドロップダウンボックスにバインドされるデフォルト値
    183. * @var タイプ
    184. */
    185. public $bindSelectValue = 0;
    186. /**
    187. * 操作列
    188. * @var 型
    189. */
    190. public $action = array();
    191. /**
    192. * 走る
    193. */
    194. public function run() {
    195. if (is_array($this->dataProvider) && count($this->dataProvider) > 0)
    196. $data = $this ->_run($this->dataProvider);
    197. else if (is_object($this->dataProvider) && count($this->dataProvider->rawData) > 0)
    198. $data = $this ->_run($this->dataProvider->rawData);
    199. $this->render('tree' , array('data'=>$data));
    200. }
    201. /**
    202. * 実行
    203. * @param type $datas
    204. * @return type
    205. * @param type $datas
    206. * @return type
    207. * /
    208. プライベート関数 _run($datas){
    209. foreach ($datas as $data) {
    210. if (!empty($this->action) && count($this->action) > 0) {
    211. foreach ($this->action as $key => $action) {
    212. $k = array_keys($action['url']);
    213. $data[$k[0]] = '';
    214. }
    215. }
    216. $this->arrAll[] = $data;
    217. $this->dataKey = array_keys($data);
    218. }
    219. $this->processData();
    220. if ($this->treeType === true)
    221. $data = $this->getTable();
    222. else
    223. $data = $this- >getSelect($this->pid, $this->bindSelectValue, $this->isMultiple, $this->selectClass, $this->defaultSelectValue);
    224. return $data;
    225. }
    226. /**
    227. * HTML を取得します
    228. * @return type
    229. */
    230. public function getHtml() {
    231. return $this->genHtml();
    232. }
    233. /**
    234. * 階層フィールドを設定します
    235. * テーブルタイプ
    236. * @return string
    237. */
    238. public function getItemName(){
    239. $html = '
    ';
  • foreach($this->dataKey as $v) {
  • if ($this->formatParam == $v)
  • $str = '{$strSep}';
  • else
  • $str = '';
  • $html .= '
  • ';
  • }
  • $html .= '
  • ';🎜 $html を返す;🎜 }
  • /**
  • * テーブルの列名を取得します
  • * @return string
  • */
  • public function getTableHead(){
  • $html = '
  • ';
  • foreach($this->tableHead as $v)
  • $html .= '';
  • $html .= '
  • ';
  • return $html;
  • }
  • /**
  • * ツリーを表形式で取得します
  • * @return string
  • */
  • public function getTable( ) {
  • $this->strItem = $this->getItemName();
  • $strRe = '
  • 2 種類の分類ツリー形式、テーブルとドロップダウン ボックスの形式のツリー構造を提供します
    テーブルとドロップダウン ボックスのスタイルをカスタマイズしたり、パラメータのどの列を書式設定されたデータとして使用するかをカスタマイズしたり、階層関係パラメータをカスタマイズしたり、テーブルの列名をカスタマイズし、時間形式を設定することもできます。
    これはすべて自動的に行われます。良いと思われた場合は、「いいね」を付けることを忘れないでください。 Yii フレームワークの強力な分類ツリー拡張機能を共有する Yii フレームワークの強力な分類ツリー拡張機能を共有する
    1. メソッドの呼び出し
    2. フォームでの呼び出し
    3. widget('ext.tree.widgets.TreeWidget',array(
    4. 'dataProvider' => $dataProvider, // データを渡す
    5. ' pid' => 'pid', // 親 ID を設定します
    6. 'tableClass' => 'items table table-bordered table-condensed', // テーブルスタイル
    7. 'formatParam' => , // 書式設定フィールドを設定します
    8. 'formatTime' => array( // 書式設定された時間パラメータを設定します
    9. 'created' ),
    10. 'action' => array(
    11. 'label' => ' Edit', // リンク名
    12. 'url' => array(
    13. 'edit' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct")', // 接続を生成します
    14. ),
    15. 'urlParams' => array('id','name'), // URLの後に渡す必要があるパラメータフィールドを設定します
    16. ),
    17. array(
    18. 'label' = > '追加 ', // リンク名
    19. 'url' => array(
    20. 'add' => 'Yii::app()->controller->createUrl("/manage/taosearch/createProduct" )', // 接続を生成します
    21. ),
    22. 'urlParams' => array('id','name'), // URL の後に渡す必要があるパラメータフィールドを設定します
    23. ),
    24. ),
    25. 'tableHead ' => array( / / テーブルの列ヘッダー情報を設定
    26. 'カテゴリID',
    27. 'チャンネル',
    28. '中国語名',
    29. '英語名',
    30. '頭文字',
    31. 'ソート',
    32. 'カテゴリレベル',
    33. '親 ID ',
    34. '作成時刻',
    35. '操作',
    36. ),
    37. )); ?>
    38. ドロップダウンボックスメソッド
    39. widget('ext .tree.widgets.TreeWidget', array(
    40. 'dataProvider' => $cate, // データを渡す
    41. 'pid' => 'pid', // 親 ID を設定する
    42. 'formatParam' => 'name', //書式設定フィールドを設定します
    43. 'treeType' => false, // 出力ツリー形式
    44. 'selectClass' => 'class="span11"', // ドロップダウン ボックスのスタイルを設定します
    45. 'defaultSelectValue' => // ドロップダウン ボックスの値とオプションのデフォルトを設定します
    46. 0 , '≡ を第 1 レベルの列として設定します ≡'
    47. ),
    48. )); ?>
    コードをコピーします
    '.$str.'{$'.$v.'}
    ';
  • $strRe .= '
  • '.$this->getTableHead().'';
  • $strRe .= $this->genHtml();
  • $strRe .= '< /tbody>
  • ';
  • return $strRe;
  • }
  • /**
  • * ドロップダウンボックスの形式でツリーを取得します
  • * @param type $strName
  • * @param array $arrValue
  • * @param type $blmMulti
  • * @param type $strExt
  • * @param type $arrFirst
  • * @戻り文字列
  • */
  • public function 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 = '';
  • $strRe = '< id="id_' を選択します。 $strName 。 ''" 名前="' 。 $strName 。 ($blmMulti ? '[]' : '') 。 '"';
  • $strRe .= ($blmMulti ? ' multiple="multiple"' : '') . (empty($strExt) ? '' : ' ' . $strExt) . '>';
  • if (is_array($arrFirst) && count($arrFirst) == 2) {
  • $strRe .= '
  • count($arrTemp) > 0 && $strRe .= $this->genHtml($arrTemp, ($intSep + 1));
  • }
  • }
  • return $strRe;
  • }
  • }
  • ?>
  • 复制發


    関連ラベル:
    ソース:php.cn
    前の記事:PHP は現在のプログラムの実行時間を計算します 次の記事:今日職場で ThoughtWorks の面接の質問を見つけたので共有させてください
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    最新の問題
    関連トピック
    詳細>
    人気のおすすめ
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート