Retroceder   Zfforum.es > Componentes de Zend Framework > Modelo - Vista - Controlador (MVC)
Registrarse Downloads Ayuda Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

Avisos

Crear Nuevo Tema Respuesta
 
Herramientas Desplegado
  #11  
Antiguo 29-jun-2010, 20:30
Manuteko Manuteko está desconectado
Senior Member
 
Fecha de Ingreso: 17-marzo-2008
Mensajes: 142
Downloads: 0
Uploads: 0
Predeterminado

No necesariamente, por ejemplo en mi app tengo;

/models
OtrosModelos
/DbTable
Modelos_asociados_a_las_tablas (extends Zend_Db_Table)

Los models que interactuan directamente con las tablas los tengo en DbTable y otros, por ejemplo Auth.php (donde hago la autemticación y otras cosillas) en el mismo nivel que DbTable. Y en cada modulo tengo las carpetas models y dentro de ellas DbTable.

Saludos
__________________
Amtes de enpesar kon otro idyoma escrivamos bien el nuestro y como coresponde
-- Manuteko = M@xixD --
Responder Citando
  #12  
Antiguo 30-jun-2010, 10:07
OSdave OSdave está desconectado
Member
 
Fecha de Ingreso: 19-febrero-2009
Mensajes: 82
Downloads: 0
Uploads: 0
Predeterminado

y el autoload lo tienes configurado como recurso? un dia tendre que revisar este tema para mis aplicaciones...
Responder Citando
  #13  
Antiguo 30-jun-2010, 13:08
Manuteko Manuteko está desconectado
Senior Member
 
Fecha de Ingreso: 17-marzo-2008
Mensajes: 142
Downloads: 0
Uploads: 0
Predeterminado

En mi config.ini tengo:

autoloaderNamespaces[] = "App_"

Y app esta dentro de library, en App tengo mis librerias (helpers, plugin y otros)
Adicionalmente, tuve que crear un Bootstrap para cada modulo, de esa forma logré compartir los models de cada uno y usarlos en diferentes módulos usando el autoloader.

Saludos
__________________
Amtes de enpesar kon otro idyoma escrivamos bien el nuestro y como coresponde
-- Manuteko = M@xixD --
Responder Citando
  #14  
Antiguo 09-jul-2010, 16:09
pleirb pleirb está desconectado
Junior Member
 
Fecha de Ingreso: 01-junio-2010
Mensajes: 21
Downloads: 0
Uploads: 0
Predeterminado

OK, yo tengo esto en mi controller:

Código PHP:
require_once APPLICATION_PATH.'/models/ArticulosModel.php';
class 
ArticulosController extends Zend_Controller_Action{
    
public function init(){}
    
public function indexAction(){}    
    
public function  viewAction(){}    
    
public function  recordsAction(){        
        
$articulos = new ArticulosModel();
        
$start=$_REQUEST['start']; // Posicion donde empieza el paginado
        
$count=$_REQUEST['count']; // Cantidad de registros a traer de la base
        
$sort=$_REQUEST['sort']; // $_REQUEST['sort'] no viene vacio y por lo tanto no da error ya que sortInfo="1" (la primer columna en el DataGrid de dojo debe ordenrase)
        // El DataGrid de Dojo postea en la variable "sort" el campo a ordenar, este puede ser "id" o "-id" en el caso de que sea descendiente
        // Copmo Mysql no reconoce el "-" sino "DESC" hay que hacer la conversion:
        
$desc strpos($sort'-')===" DESC" ""// Si la variable $sort empeiza con - $desc es igual a DESC de lo contrario queda vacia
        
$sort strpos($sort'-')===substr($sort1) : $sort// Si la variable $sort empeiza con - le quitamos el - y sino dejamos la variable como esta
        // Ahora ya puedo obtener los datos desde el modelo :)
           
$data$articulos->getArticulosData($start,$count,$sort.$desc);
        
// Preparo los datos que le vamos a entregar a la Grilla
        
$dojoData = new Zend_Dojo_Data();
        
$dojoData    ->setIdentifier('id'// Aqui definimos la clave primaria
                     
->addItems($data// Entregamos los datos obtenidos desde la base de datos
                    
->setMetadata('numRows'$start+$count+1); // Si numRows es mayor a la cantidad de registros existentes en la grilla, entonces va a seguir pidiendo datos a medida que bajamos con el scroll        
        
echo $dojoData->toJson();
        
// Convierto el resultado en JSON (lenguaje que entiende Dojo y sus componentes)
        
exit;
    }

Manuteko: He intentado hacer lo que dices, pero no logro dar con la tecla, la idea seria evitar en mi caso esta linea en el controller:
require_once APPLICATION_PATH.'/models/ArticulosModel.php';

OSdave: La separación del código java script de la vista que me sugieres, no logro hacer que funcione.
He notado que $this->baseUrl() no devuelve nada, de todas formas he probado con distintas rutas y nada. Por otro lado, he intentado resolver las otras indicaciones y el código me ha quedado así y sigue funcionando:

Código PHP:
class ArticulosModel extends Zend_Db_Table_Abstract {
    
protected $_name 'articulos';
    
// Este método se encarga de paginar los resultados
    
public function getArticulosData($start,$count,$sort){
        
// Preparamos la cadena SQL
        
$select $this->select();
        
$select->from($this->_name);
        
$select->order($sort);
        
$select->limitPage($start,$count);
        
$resultado $this->fetchAll($select);
        return 
$resultado;
    }    
    
public function getArticulosCount(){
       
$resultado $this->query();
       return 
$resultado->rowCount();
    }

Responder Citando
  #15  
Antiguo 11-jul-2010, 14:23
pleirb pleirb está desconectado
Junior Member
 
Fecha de Ingreso: 01-junio-2010
Mensajes: 21
Downloads: 0
Uploads: 0
Predeterminado

Cita:
Iniciado por OSdave Ver Mensaje
En el controlador, haces un "echo", y formateas el resultado en json. Normalmente tu controlador pasa los datos a la vista, nada de echo.
Y para formatear lo que se envia, se suele hacer en el init() del controlador. Con los helpers de AjaxContext, especificas que acciones pueden ser en formato ajax y así se deshabilita el layout y se formatea lo que se envia a la vista en el formato correcto. O sea que lo defines en el init para todas las acciones, en vez de dentro de cada accion.
He intentado arreglar esto con lo siguiente en el init() como dices:

Código PHP:
        $this->_helper->contextSwitch()
             ->
addActionContext('records''json')
             ->
initContext(); 
No he tenido éxito ya que si quito el echo obtengo un error del lado del cliente
Responder Citando
Respuesta


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado

Ir al Foro

Powered by : vBulletin® Versión 3.8.2
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Traducido por mcloud de vBhispano.com
eXTReMe Tracker