Foros del Web » Programando para Internet » PHP » Zend »

llamar a un metodo de un controller en Zend

Estas en el tema de llamar a un metodo de un controller en Zend en el foro de Zend en Foros del Web. Hola a todos,y primero que nada agradecerles por tomarse el tiempo ayudando en este gran foro, bueno mi pregunta es: COMO LLAMO A UN METODO ...
  #1 (permalink)  
Antiguo 25/11/2010, 08:51
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
llamar a un metodo de un controller en Zend

Hola a todos,y primero que nada agradecerles por tomarse el tiempo ayudando en este gran foro, bueno mi pregunta es: COMO LLAMO A UN METODO DE UN CONTROLLER DESDE MI VISTA .PHTML

La forma clasica(sin framework) que hacia era instanciando la clase y luego llamando al metodo, PERO vi en un ejemplo que en el CONTROLLER en vez de hacer un RETURN hacen esto al final :
$this->view->clientes = $resultado;

Hice las prueba, pero no me funciona, caso contrario cuando instancio el CONTROLLER me deberia funcionar como la forma clasica que lo hacia(sin framework),pero tampoco funciona, Y SI instancio directamente el MODEL si funciona a la perfeccion, al devolver los datos en mi vista .phtml

Gracias por su ayuda de antemano
  #2 (permalink)  
Antiguo 25/11/2010, 09:05
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: llamar a un metodo de un controller en Zend

hola alfcm:
tienes que enlazarlo desde tu controller para que cuando llames la vista puedas tener acceso al modelo.
Por ejemplo:
Código PHP:
     public function indexAction()
    {
        
$this->view->title "Listado de usuarios";
        
$usuario= new Model_Usuario();
        
$this->view->entries =  $usuario->getAlluser();
        
    } 
eso en tu controller ahora en la vista segun sea tu caso:
Código HTML:
<table>
<TR> 
   <th>Nombre</th>
   <th>Mail</th>
</TR>
<?php foreach ($this->entries as $entry): ?>
 <tr>
    <td><?php echo $this->escape($entry['name']); ?></td>
    <td><?php echo $this->escape($entry['mail']); ?></td>
 </tr>

    <?php endforeach ?>
</table> 
Saludos
  #3 (permalink)  
Antiguo 25/11/2010, 09:14
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: llamar a un metodo de un controller en Zend

Gracias por responder cnolasco, tengo un ejemplo aplicando lo mismo que me indicas, hice la prueba, osea el foreach, y NADA DE NADA.
  #4 (permalink)  
Antiguo 25/11/2010, 09:20
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: llamar a un metodo de un controller en Zend

bueno podes poner un funcion que otiene los datos , la que llamas para poder ver como la estas realizando?.-

Saludos
  #5 (permalink)  
Antiguo 25/11/2010, 09:26
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: llamar a un metodo de un controller en Zend

BUENO , aqui esta mi vista index.phtml de mi carpeta cliente, explicando es un formulario de cliente para registra sus datos personales.

Código PHP:
<select id="dpto" name="dpto">
                                    <option value="">[SELECCIONE UN DEPARTAMENTO]</option>
                                    <?php
                                        
//$ubg = new UbigeoController();
                                        //$ubg->listardepartamentosAction();                                        
                                        
                                        
foreach ($this->departamentos as $depa) :
                                        
?><option value=<?php echo $depa->dpto?>><?php echo $depa->dpto_nombre?></option>
                                    <?php                
                                        
endforeach;
                                    
?>
                                </select>
mi controller UbigeoController.php

Código PHP:
public function listardepartamentosAction(){
        
$ubigeo = new Model_DbTable_Ubigeo();
        
$result $ubigeo->listardepartamentos();
        
$this->view->departamentos $result;
        
//return $result;
    

y mi model Ubigeo.php

Código PHP:
class Model_DbTable_Ubigeo {
    
    public function 
listardepartamentos(){
        
        
$db Zend_Db_Table_Abstract::getDefaultAdapter();
        
$db->setFetchMode(Zend_Db::FETCH_OBJ);
        
$sql "SELECT DISTINCT dpto,dpto_nombre FROM ubigeo ORDER BY 2";
        
$rows $db->fetchAll($sql);
        return 
$rows;
    }

Agradezco nuevamente tu ayuda

Última edición por alfcm; 25/11/2010 a las 09:34
  #6 (permalink)  
Antiguo 25/11/2010, 10:10
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: llamar a un metodo de un controller en Zend

prueba con <?php echo $this->escape($depa->dpto); ?>
ya me avisas
  #7 (permalink)  
Antiguo 25/11/2010, 10:18
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: llamar a un metodo de un controller en Zend

ya hice la prueba y sigue igua, con el select vacio
  #8 (permalink)  
Antiguo 25/11/2010, 10:28
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: llamar a un metodo de un controller en Zend

Pero por logica yo deberia llamar al metodo del controller, pero yo no hago eso por eso no me llena el <select>, y mi pregunta es, donde instacio y llamo al metodo donde yo seteo $this->view->departamentos
  #9 (permalink)  
Antiguo 25/11/2010, 10:36
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: llamar a un metodo de un controller en Zend

Me parece que te estas entreverando, el index.phtml a que module/controller pertenece?
  #10 (permalink)  
Antiguo 25/11/2010, 11:03
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: llamar a un metodo de un controller en Zend

el index.phtml pertenece al view->scripts->cliente (ya que el index.phtml contiene el formulario para el mantenimiento de clientes)

y trabajo con dos controller que estan ubicados en la carpeta controllers ; ClienteController( donde estan los metodos agregar,editar,eliminar)
y el controller UbigeoController( aqui me lista todos mis departamentos para mi <select> dentro del index.phtml)

Última edición por alfcm; 25/11/2010 a las 11:11
  #11 (permalink)  
Antiguo 25/11/2010, 11:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Busqueda Respuesta: llamar a un metodo de un controller en Zend

Entonces ahi tendrias que hacer la llamada al modelo:

ClientController.php
Código PHP:
Ver original
  1. public function indexAction()
  2. {
  3.       ....
  4.       $ubigeo = new Model_DbTable_Ubigeo();
  5.       $result = $ubigeo->listardepartamentos();
  6.       $this->view->departamentos = $result;
  7. }

view/scripts/client/index.phtml

Código HTML:
Ver original
  1. <select id="dpto" name="dpto">
  2.     <option value="">[SELECCIONE UN DEPARTAMENTO]</option>
  3.      <?php foreach ($this->departamentos as $depa) : ?>
  4.      <option value=<?php echo $depa->dpto; ?>><?php echo $depa->dpto_nombre; ?></option>
  5.      <?php endforeach; ?>

Si bien te va a funcionar no es la mejor manera de hacer esto, deberias trabajar con Zend_Form y no crear el formulario a "pelo".

Salu2.
  #12 (permalink)  
Antiguo 25/11/2010, 11:22
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: llamar a un metodo de un controller en Zend

hare la prueba, muchas gracias masterpuppet
  #13 (permalink)  
Antiguo 25/11/2010, 11:26
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: llamar a un metodo de un controller en Zend

Funciono bien,muchas gracias, ahora sobre tu sugerencia de usar Zend Form, que pasaria si el diseño se encarga precisamente un diseñador el cual solo maneja algun programa de diseño, no le seria facil, para mi es muy engorroso trabajar con Zend_Form, cuando se quiere diseñar un formulario complejo y aparte que lei esto en internet

http://www.demo31.com/php/zend-frame...-framework-iii

Es mi humilde opinion!

Etiquetas: controller, llamar, metodo
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 12:20.