EXT JS - 使用PHP将目录树结构导入JSON对象

时间:2012-09-24 23:29:49

标签: php javascript extjs nodes

我正在使用EXT JS来创建一个简单的树,它将显示一个目录及其内容。无论出于何种原因,我已经完成了他们所有的例子,我无法复制我想要的东西。我想根据目录结构创建一个JSON对象,以便将它输入EXT JS Tree。

这是我打开目录的脚本,创建父节点然后尝试创建子节点。在这个目录里面只是.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后端开发人员,所以我为我的noobness道歉,当谈到javascript和EXT所需的正确形成这个JSON时

1 个答案:

答案 0 :(得分: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);
      }