/** * get html dom from string * @param $str * @param bool $lowercase * @param bool $forceTagsClosed * @param $target_charset * @param bool $stripRN * @param $defaultBRText * @param $defaultSpanText * @return bool|Tree */ static function buildFromString($str, $lowercase = true, $forceTagsClosed = true, $target_charset = self::DEFAULT_TARGET_CHARSET, $stripRN = true, $defaultBRText = self::DEFAULT_BR_TEXT, $defaultSpanText = self::DEFAULT_SPAN_TEXT) { $dom = new Tree(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText); if (empty($str) or strlen($str) > self::MAX_FILE_SIZE) { $dom->clear(); return false; } $dom->load($str, $lowercase, $stripRN); return $dom; }
echo '<ul>'; foreach ($tree as $node) { $selected = !empty($node['state']['selected']) ? 'checked' : ''; echo "<li><input type=\"checkbox\" {$selected}>" . $node['name']; if (!empty($node['children'])) { $this->printSelectTree($node['children']); } echo '</li>'; } echo '</ul>'; } } } //demo //所有数据 $data = [['id' => 1, 'pid' => 0, 'name' => 'a'], ['id' => 2, 'pid' => 0, 'name' => 'b'], ['id' => 3, 'pid' => 0, 'name' => 'c'], ['id' => 4, 'pid' => 2, 'name' => 'd'], ['id' => 5, 'pid' => 1, 'name' => 'e'], ['id' => 6, 'pid' => 5, 'name' => 'f'], ['id' => 7, 'pid' => 5, 'name' => 'g'], ['id' => 8, 'pid' => 5, 'name' => 'h'], ['id' => 9, 'pid' => 4, 'name' => 'i'], ['id' => 10, 'pid' => 9, 'name' => 'j'], ['id' => 11, 'pid' => 0, 'name' => 'k']]; //有权限查看的数据 $allowed_data = [['id' => 1, 'pid' => 0, 'name' => 'a'], ['id' => 2, 'pid' => 0, 'name' => 'b'], ['id' => 10, 'pid' => 9, 'name' => 'j']]; //选中的数据 $selected_keys = [1, 2, 9]; $tree = new Tree(); $tree->load($data, $allowed_data, $selected_keys); echo "<style>li{list-style-type:none;}</style>"; echo "完整树:<br/>"; $tree->printTree($tree->buildTree()); echo "------------------------------------------------------<br/>"; echo "有权限的树:<br/>"; $tree->printAllowedTree($tree->buildTree()); echo "------------------------------------------------------<br/>"; echo "有选择功能的树:<br/>"; $tree->printSelectTree($tree->buildTree());
/** * Load node children * * @param int $recursionLevel * @return Node */ public function loadChildren($recursionLevel = 0) { $this->_tree->load($this, $recursionLevel); return $this; }