Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/08/2010, 07:58
Everu
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 10 meses
Puntos: 0
Duda con la parte de la vista

¡Hola a todos!

He estado desarrollando un pequeño script en POO, pero me encuentro con una serie de problemas a la hora de mostrar los resultados en la parte de la vista. Antes de nada, os dejo un ejemplo de cómo tengo programado y organizado todo:

/class/class_user.php
Código PHP:
class users {
//vars

      
function __construct() {
           
//constructor
      
}

      function 
infoUsers($id null) {
           
//query
           
while($row $this->db->getResult($query)) {
                 
$this->arrayuser[$row['ID']] = array('ID' => $row['ID'],
                                                      
'name' => $row['name']);
           }
      return 
$this->arrayuser;
      }

Como veis, la función infoUsers retorna un array multidimensional con todos los datos del usuario con esa ID.

Vamos con el index.php, que une la clase con el template:

index.php
Código PHP:
require_once(dirname(__FILE__).'/class/class_user.php');
require_once(
dirname(__FILE__).'/template/user.tpl'); 
Y vamos a ver el template, donde tengo el 'problema':

user.tpl
Código PHP:
<?php
     $users 
= new users();
     
$users->infoUsers($id);
     foreach(
$users->arrayuser as $users):
?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
Bien, funciona todo bien, pero creo que no debería haber tanto código PHP en los templates. Especialmente las variables que crean el objeto o que llaman a la funcion:

user.tpl
Código PHP:
<?php foreach($users->arrayuser as $users): ?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
Mucho mejor así :) El problema es que creo que no estoy aplicando bien el sistema MVC ¿verdad? ¿dónde tendría que crear los objetos y llamar a las funciones para que no estuviese en los templates?

Y otra duda más, con este ejemplo:

user.tpl
Código PHP:
<?php
     $users 
= new users();
     
$users->infoUsers(5);
     foreach(
$users->arrayuser as $users):
?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
<?php
      $users
->infoUsers(6);
      foreach(
$users->arrayuser as $users):
 
?>
 <div class="name"><?php echo $users[name]; ?></div>
 <div class="ID"><?php echo $users[ID]; ?></div>
 <?php endforeach; ?>
Este ejemplo no funciona. No puedo primero llamar a la función declarando $id=5, y luego declarando $id=6 en un mismo archivo, así que tengo que crear de nuevo el objeto, pero con otro nombre:

Código PHP:
 <?php
      $users 
= new users();
      
$users->infoUsers(5);
      foreach(
$users->arrayuser as $users):
 
?>
 <div class="name"><?php echo $users[name]; ?></div>
 <div class="ID"><?php echo $users[ID]; ?></div>
 <?php endforeach; ?>
<?php
     $users2 
= new users();
       
$users2->infoUsers(6);
       foreach(
$users2->arrayuser as $users):
  
?>
  <div class="name"><?php echo $users[name]; ?></div>
  <div class="ID"><?php echo $users[ID]; ?></div>
  <?php endforeach; ?>
En fin... dudas de novato . Agradecería mucho vuestra ayuda para aprender a usar bien el MVC.