0

我将 EXT JS 用于一个简单的树,它将显示一个目录及其内容。无论出于何种原因,我已经浏览了他们的所有示例,但无法复制我想要的内容。我想根据目录结构创建一个 JSON 对象,以便可以将其输入到 EXT JS 树中。

这是我打开目录、创建父节点然后尝试创建子节点的脚本。这个目录里面只有 .xml 文件。我已经让它可以打开目录并为文件创建节点,但它不显示父级或根级别并且失去了漂亮的折叠效果。

这是我的代码:

if($handler = opendir($dir."/$market_desc"))
          {

          while (($sub = readdir($handler)) !== FALSE)
          {
              if ($sub !== "." && $sub !== ".." && $sub !== ".svn")
              {
                  if(is_file($dir."/$market_desc/".$sub))
                  {
                      $subDir[] = array(
                       'text' => $sub,
                       'id'   => $sub,
                       'checked' => false,
                       'leaf' => true,
                       'cls'  => 'file'
                           );
                  }
              }

          }

           $listDir[] = array(
           'text' => $market_desc,
           'id'   => $market_desc,
           'checked' => false,
           'cls'  => 'folder',
           'children' => array($subDir)
        );


          closedir($handler);
          unset($handler);

目录结构只有 1 级深,一些文件位于根级别,然后是许多目录,这些目录也包含文件,但不会超过 1 级。

我是一名 php 后端开发人员,所以对于 javascript 和 EXT 所需的 JSON 的正确格式,我为我的菜鸟道歉

4

1 回答 1

0

经过反复试验,我得到了正确格式的 EXT JS 的 PHP 脚本。它将打开目录并构建嵌套数组,该数组可以进行 json_encoded 并发送到 EXT JS Tree 进行渲染

          // Get market specific features and make nodes
      if($handler = opendir($dir."/$market_desc"))
      {
          while (($sub = readdir($handler)) !== FALSE)
          {
              if ($sub !== "." && $sub !== ".." && $sub !== ".svn")
              {
                  if(is_file($dir."/$market_desc/".$sub))
                  {
                                $subDir[] = array(
                                'text' => $sub,
                                'id'   => $sub,
                                'checked' => false,
                                'leaf' => true,
                                'parent' => $market_desc,
                                'children' => NULL,
                                'cls'  => 'file'
                                );
                  }

              }

          }
                          $listDir[] = array(
                          'text' => $market_desc,
                          'id'   => $market_desc,
                          'checked' => false,
                          'cls'  => 'folder',
                          'parent' => NULL,
                          'expanded' => true,
                          'children' => $subDir
                              );


          closedir($handler);
          unset($handler);
      }
于 2012-09-25T16:49:13.027 回答