Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Separando vista del controlador.

Estas en el tema de Separando vista del controlador. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Mmm espero que me pueda explicar: Tengo un metodo llamado listUsers() el cual me devuelve una tabla ya formateada con HTML de los registros. Quisiera ...
  #1 (permalink)  
Antiguo 29/07/2009, 02:52
 
Fecha de Ingreso: agosto-2008
Ubicación: Puebla, Mexico.
Mensajes: 84
Antigüedad: 16 años, 4 meses
Puntos: 0
Separando vista del controlador.

Mmm espero que me pueda explicar:

Tengo un metodo llamado listUsers() el cual me devuelve una tabla ya formateada con HTML de los registros. Quisiera comenzar a separar la vista del controlador, de modo que pueda hacer algo similar a:

Código PHP:
<?php while($obj -> have_users()) { ?>
    <h1><?php $obj -> getUserName()</h1>
    <
h4><?php $obj -> getUserAge()</h4>
<?
php ?>
o

Código PHP:
<?php while($obj -> have_users()) { ?>
    <td><?php $obj -> getUserName()</td>
    <
td><?php $obj -> getUserAge()</td>
<?
php ?>
Esto daria mas versatilidad al codigo de modo que pueda presentar mis datos como yo quiera y no siempre me mostraria todo como una tabla ya formateada, podria hacer una query con una condicion especifica, pasarle el resultado a have_users() y reusarlo para mostrar los resultados, el detalle esta en...como hacerlo, alguna sugerencia ?

Última edición por a77icu5; 29/07/2009 a las 03:03
  #2 (permalink)  
Antiguo 29/07/2009, 12:10
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 4 meses
Puntos: 139
Respuesta: Separando vista del controlador.

Pordrias tener un archivo que te procesa los datos llamado

usuarios.php
Código PHP:



## Supongamos que tienes un objecto que se llama users.
$user = new users();


 
## Llamamos la funcion , y nos devuelve un array de resultados.
$resultado $user->listUsers();

     
## Incluimos la vista.
    
include("vista.php"); 

Vista.php


Código PHP:
Ver original
  1. <body>
  2.    
  3.     <table cellpadding="0" cellspacing="0" width="300">
  4.     <tbody>
  5.     <tr>
  6.     <th>Nombre</th>
  7.     </tr>
  8.    
  9.     <?php foreach($resultado as $row => $field):?>
  10.    
  11.     <tr>
  12.     <td><?php echo $field ?></td>
  13.     </tr>
  14.    
  15.     <?php endforeach; ?>
  16.    
  17.     </tbody>
  18.     </table>
  19.    
  20.     </body>
  #3 (permalink)  
Antiguo 29/07/2009, 16:24
 
Fecha de Ingreso: agosto-2008
Ubicación: Puebla, Mexico.
Mensajes: 84
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Separando vista del controlador.

Me gusta el metodo...vamos a probarlo. , tenia pensado algo mas o menos asi:

Código PHP:
class Users {
    private $name;
    private $age;
    
    public function __construct() {
        $this -> name = ' ';
        $this -> age    = 0;
    }

    public function setUserName($name) {
        $this -> name = $name;
    }

    public function getUserName() {
        return $this -> name;
    }

    public function setUserAge($age) {
        $this -> age = $age;
    }

    public function getUserAge() {
        return $this -> age;
    }

    public function query_rows() {
        $query = "select name, age from usuarios";
        $result = mysql_query($query, $con);
        while($row = mysql_fetch_array($result)) {
            $this -> setUserName($row['name']);
            $this -> setUserAge($row['age']);
        }
    }
}

$user = new Users();
<?php while($obj -> query_rows()) { ?>
    <td><?php $obj -> getUserName()</td>
    <
td><?php $obj -> getUserAge()</td>
<?
php ?>
Pero al implementar, query_rows() siempre daria true y getUserName y getUserAge siempre se quedarian con el ultimo registro, ademas solo me funcionaria para dicha query y lo que yo queria es un metodo 'generico' que me funcionara con cualquier query, tu idea me gusta... podria tener un metodo llamado parseQuery($query) que me devolviera el array $result de cualquier query y despues con el foreach mostrar datos...mmm, Gracias por la idea sr, espero que alguien mas se asome en el tema y pueda opinar.

Última edición por a77icu5; 29/07/2009 a las 16:34
  #4 (permalink)  
Antiguo 29/07/2009, 22:29
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 4 meses
Puntos: 139
Respuesta: Separando vista del controlador.

Si quieres te pudes dar una miradita al manual de codeigniter
Para k veas como ellos implementan la vista y manejan la base de datos, eso te puede aclarar mas dudas y de paso analisa a ver si te gusta la idea de utilizar ese framework
  #5 (permalink)  
Antiguo 01/08/2009, 18:49
 
Fecha de Ingreso: agosto-2008
Ubicación: Puebla, Mexico.
Mensajes: 84
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Separando vista del controlador.

voy a dar un vistazo a codeigniter, lei tambien un poco sobre cakephp pero entre tantos scripts me perdia xD, gracias a los users por las recomendaciones, regresare aqui posteriormente con buenas...o malas noticias, haber que encuentro, gracias.
  #6 (permalink)  
Antiguo 01/10/2009, 14:02
 
Fecha de Ingreso: agosto-2008
Ubicación: Puebla, Mexico.
Mensajes: 84
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Separando vista del controlador.

les dije que regresaria con buenas nuevas, codeigniter es genial !

gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:06.