【问题标题】:EXT JS - Get directory tree structure into JSON object with PHPEXT JS - 使用 PHP 将目录树结构转换为 JSON 对象
【发布时间】:2012-09-24 23:29:48
【问题描述】:

我将 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 的正确格式方面的菜鸟表示歉意

【问题讨论】:

  • 那么问题是,我使用的脚本有什么问题,因为它没有将文件嵌套在文件夹中......
  • 简而言之,我需要一个简单的 php 脚本来浏览目录并创建正确的数组结构,以便它可以被 json_encoded。目录的深度永远不会超过 1 级。

标签: php javascript extjs nodes


【解决方案1】:

经过反复试验,我得到了正确格式的 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);
      }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多