recursively walks a Cakephp threaded array (Tree behavior)


/ Published in: PHP
Save to your folder(s)



Copy this code and paste it in your HTML
  1. // ESTO ES EN EL MODELO
  2.  
  3.  
  4. // CUSTOM VARS
  5. var $documentsList = array(); // esta propiedad guardará lo que vamos tomando del array
  6.  
  7.  
  8.  
  9. // CUSTOM METHODS
  10.  
  11. // devuelve un listado de los elementos del arbol con sus elementos principales
  12. function getDocumentsList() {
  13.  
  14. // creo el array que contendrá los datos
  15. $documentList = array();
  16.  
  17. // traigo los datos
  18. $documents = $this->find('threaded', array('order' => 'Document.folder DESC, Document.description ASC') );
  19. //pr( $documents );
  20.  
  21. // creo una variable global que pueda ser accedida por la otra función para ir guardando los valores
  22. $this->traverseArray( $documents );
  23.  
  24. return( $this->documentsList );
  25.  
  26. }
  27.  
  28.  
  29. // recorre el array anidado y va asignando en el array los valores
  30. function traverseArray( $items, $level = -1 ) {
  31.  
  32. $level++;
  33.  
  34. foreach( $items as $item ) {
  35.  
  36. // datos de cada elemento
  37. $this->documentsList[] = array( 'id' => $item['Document']['id'], 'text' => $item['Document']['description'], 'level' => $level, 'folder' => $item['Document']['folder'], 'filename' => $item['Document']['filename'] );
  38.  
  39. // si es un array y no está vacío lo recorre
  40. if ( is_array( $item['children'] ) && !empty( $item['children'] ) ) {
  41. $this->traverseArray( $item['children'], $level );
  42. }
  43. }
  44.  
  45. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.