it-swarm-fr.com

Quel est le meilleur moyen, programmatiquement, à itérer à travers les résultats d'une vue?

Étant donné une vue, nommé "enfants" (avec deux champs: enfant_node_id et a naissance_order_value) Quel est le meilleur moyen, de manière programmatique, à itérer via les résultats des vues définis donnés sur Display_Id de "Par défaut" et un argument contenant l'ID de noeud parent?

Auparavant, j'ai utilisé la vue dans un bloc à l'aide du code similaire à ce qui suit:

if ( arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2)) {
   $node = node_load(arg(1));
   $args = array($node->nid);
   $view = views_get_view('Children');
   print $view->preview('default', $args);
}

Cependant, dans un autre bloc, je veux effectuer une logique basée sur les valeurs trouvées dans la vue. Vous pourriez être capable de deviner que la logique commerciale basée sur mon exigence finale: je veux que le bloc de code soutenant la vue ("enfants") soit appelé plusieurs fois. Comme je ise itérer les résultats de la vue de jeu de données, je souhaite goûter récursivement à travers les nœuds des enfants qui interrogent pour leurs enfants.

12
clsturgeon

Jouer avec des points de vue un peu, je semblais avoir élaboré une approche. Cependant, j'aimerais laisser ma question ouverte à d'autres réponses et de meilleures solutions.

<?php
if ( arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2) ) {
   $node = node_load(arg(1));
   $args = array($node->nid );
   unset($view);
   $view = views_get_view('Children');
   $view->set_display('default');  
   $view->set_arguments($args);
   $view->set_items_per_page(20);
   $view->execute();
   $newarg = array();
   for ($i=0; $i<sizeof($view->result); $i++) {
      $newarg[$i] = $view->render_field('nid_1', $i);
   }
   for ($i=0; $i<sizeof($newarg); $i++) {
      unset($view);
      $view = views_get_view('Children');
      $view->set_display('default');  
      $view->set_arguments($newarg[$i]);
      $view->set_items_per_page(20);
      $view->execute();
      ....
   }
}
?>

La clé de l'exécution de la vue plusieurs fois était pour moi de ne pas mettre en place ($ vue) lorsque j'ai été effectué avec le jeu de résultats.

2
Jeremy French