Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/07/2011, 03:08
Avatar de bet7o
bet7o
 
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 3 meses
Puntos: 20
Respuesta: Mostrar categorias con funcion recursiva

Uncontroled_Duck ya logro sacar el formato que necesito, el unico problema es que los indices con categorias padres no me los respeta.

El script me quedo así

Código PHP:
Ver original
  1. public function getPath($parent = NULL, $child = 0, $nombre = NULL)
  2.  
  3.   {
  4.  
  5.     $conditions = $child == 0 ? 'categoria_id IS NULL' : "categoria_id = $parent";
  6.  
  7.     /* Categorias padres */
  8.  
  9.     $rs = $this->find("conditions: $conditions");
  10.  
  11.     if(!$rs) return array();
  12.  
  13.     $path = array();
  14.  
  15.     /* Iteraccion de categorias padres */
  16.  
  17.     foreach($rs as $item)
  18.  
  19.     {
  20.  
  21.       $path[$item->id] = Validate::isNull($nombre) ? $item->nombre : "$nombre > $item->nombre";
  22.  
  23.       /* Iteraccion de categorias hijas */
  24.  
  25.       $childs = $this->getPath($item->id, 1, $path[$item->id]);
  26.  
  27.       if(count($childs) > 0)
  28.  
  29.         $path = array_merge($path, $childs);
  30.  
  31.     }
  32.  
  33.     return $path;
  34.  
  35.   }

y el resultado que me arroja es

Código PHP:
Ver original
  1. (
  2.     [0] => Switches
  3.     [1] => Switches > Routers
  4.     [2] => Switches > Routers > Storage
  5.     [3] => Switches > Routers > Storage > Gateway, Ata y Accesorios
  6.     [1002] => Tecnología Inalámbrica
  7.     [1003] => Seguridad
  8.     [1005] => Unified Communications
  9. )

como se puede ver, las primeras categorias no tienen el id correcto.

Alguna idea?

Saludos!
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana