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

いくつかの試行錯誤の末、私はこのPHPスクリプトをEXTJS用の正しい形式で作成しました。ディレクトリを開き、ネストされた配列を構築します。これは、json_encodedして、レンダリングのためにEXTJSツリーに送信できます。

          // 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 に答える