2017-05-30 10 views
2

Ich habe versucht, ein Ordner-Konzept in meiner Anwendung zu erstellen.
Ich versuchte, das o/p im json-Format für APi zurückzugeben. Ich versuche, den Ordner, Unterordner und die Dateien in Unterordner aufzulisten, aber wenn ich wie diesesMultidimensionales Array in YII2

{ 
    "success_msg": 1, 
    "message": "success", 
    "details": [ 
    { 
     "foldername": "Test_folder_1", 
     "subfolder": [ 
     { 
      "sub_folder_name": "Test_sub_folder_1", 

     "subfile": [ 
     { 
      "filename": "test_1.pdf" 
     }, 
     { 
      "filename": "test_2.pdf" 
     } 
     ] 
     }, 
     { 
      "sub_folder_name": "test_folder", 
"subfile": [ 
     { 
      "filename": "test_3.jpg" 
     } 
     ] 
     } 
     ] 
    } 
    ] 
} 

um verschachtelte Array versucht falsch, ich bin immer o/p.Let mir, dass

mit Ihnen teilen
{ 
    "success_msg": 1, 
    "message": "success", 
    "details": [ 
    { 
     "foldername": "Test_folder_1", 
     "subfolder": [ 
     { 
      "sub_folder_name": "Test_sub_folder_1" 
     }, 
     { 
      "sub_folder_name": "test_folder" 
     } 
     ], 
     "subfile": [ 
     { 
      "filename": "test_1.pdf" 
     }, 
     { 
      "filename": "test_2.pdf" 
     }, 
     { 
      "filename": "test_3.jpg" 
     } 
     ] 
    }, 
    { 
     "foldername": "sample_folder", 
     "subfolder": [], 
     "subfile": [] 
    } 
    ] 
} 

Und das ist meine Aktion

public function actionFiles() { 
    ob_start(); 
    $raw = file_get_contents("php://input"); 
    $obj = json_decode($raw); 
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
    if ($obj!=null){ 
     $user_id   = $obj->cur_user_id; 
     $user_model   = User::find()->where(['id'=>$user_id])->one(); 
     $developer_id  = $user_model->createdby; 
     $folder_model  = Folder::find()->where(['developerid'=>$developer_id,'foldertype'=>'parent'])->all(); 
     $count_folder  = count($folder_model); 
     if($count_folder > '0'){ 
      $response = ['success_msg' => 1, 'message' => 'success', 'details' => []]; 
      foreach($folder_model as $folder) { 
       $folder_id       = $folder['id']; 
       $userdet['foldername']    = $folder['foldername']; 
       $sub = []; 
       $sub_files = []; 
      $subfolder_model = Folder::find()->where(['folderid'=>$folder_id])->all(); 
      foreach ($subfolder_model as $subfolder) { 
       $sub_folder_id    = $subfolder['id']; 
       $sub_name['sub_folder_name'] = $subfolder['foldername']; 
      $sub_file = Files::find()->where(['folderid'=>$folder_id,'subfolderid'=>$sub_folder_id])->all(); 
      foreach ($sub_file as $file) { 
       $filename['filename'] = $file['filename']; 
       array_push($sub_files, $filename); 
      } 
       array_push($sub, $sub_name);     
       // echo '<pre>';print_r($userdet); 
      } 

       $userdet['subfolder'] = $sub;    
       $userdet['subfile'] = $sub_files; 
       array_push($response['details'], $userdet); 

      } 
      echo json_encode($response); 
     }else { 
       // failed to insert row 
      $response["success_msg"] = 2; 
      $response["message"] = "No News found"; 
      echo json_encode($response); 
     } 

    } else { 
     $response["success_msg"] = 3; 
     $response["message"] = "Data missing"; 
     echo json_encode($response); 
    } 
} 

kann mir jemand sagen, wie kann ich sub-Datei-Feld in Unterordner Array ...
dank advanc einfügen e ..

Antwort

0

Ich habe Ihren Zustand aktualisiert, wenn Ordner existiert. Aktualisieren Sie in Ihrem Code und überprüfen Sie es.

Hinweis: - Ich habe es nicht getestet, also überprüfen Sie es bitte Ihr System.

+0

Vielen Dank für den Support.Ich habe herausgefunden, meine Lösung.Lass mich teilen –

0

Ich aktualisierte den Code mit einigen Änderungen in der Position der Arrays.

if ($count_folder > '0') { 
       $response = ['success_msg' => 1, 'message' => 'success', 'details' => []]; 
       foreach ($folder_model as $folder) { 
        $folder_id    = $folder['id']; 
        $userdet['foldername'] = $folder['foldername']; 
        $sub     = []; 
        $subfolder_model  = Folder::find()->where(['folderid' => $folder_id])->all(); 
        foreach ($subfolder_model as $subfolder) { 
        $sub_files    = []; 
         $sub_folder_id     = $subfolder['id']; 
         $sub_name['sub_folder_name'] = $subfolder['foldername']; 
         $sub_file = Files::find()->where(['folderid' => $folder_id, 'subfolderid' => $sub_folder_id])->all(); 
          echo '<pre>';print_r($sub_file); 

         foreach ($sub_file as $file) { 
          $filename['filename']  = Yii::$app->urlManager->createAbsoluteUrl('uploads/' . $file['filename']); 
          array_push($sub_files, $filename); 
         } 
         $sub_name['subfile']   = $sub_files; 
         array_push($sub, $sub_name); 
        } 

        $userdet['subfolder'] = $sub; 
        array_push($response['details'], $userdet); 
       } 
       echo json_encode($response);