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

Zend Application Ejemplo zend framework 1.8

Estas en el tema de Zend Application Ejemplo zend framework 1.8 en el foro de Zend en Foros del Web. bueno me puse a leer y leer y mas o menos pude implementar el modelo de forma sencilla con zendframework 1.8 como mi amigo GatorV ...
  #1 (permalink)  
Antiguo 15/06/2009, 00:38
Avatar de zfStuden  
Fecha de Ingreso: abril-2009
Mensajes: 109
Antigüedad: 15 años, 8 meses
Puntos: 0
Zend Application Ejemplo zend framework 1.8

bueno me puse a leer y leer y mas o menos pude implementar el modelo de forma sencilla con zendframework 1.8 como mi amigo GatorV dijo en Zendframework 1.8 podemos crear metodos init dependiendo de la funcion que tenga la clase frontControllor para se mas explicito si tienemos un metodo que diga addHelperPath() en la clase

Código PHP:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function 
_initaddHelperPath(){

Return 
loquevallasadevolver
}

"o"

Código PHP:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function 
_initView(){
$view $this->getResource('view');//obtengo la vista del applicaction.ini
$view->addHelperPath(APPLICATION_PATH."/View/Helper""App_View_Helper");//agrego un view helper de manera cencilla 
Return  $view //ojo este return no es necesario
}
///ojo este no lo he provado pero seria un ejemplo de lo que puedes hacer

"o "

Código PHP:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  
 protected function 
_initAutoload()
    {
//definimos el modelo
          
$autoloader = new Zend_Application_Module_Autoloader(array(
            
'namespace' => 'Helpers',//aca cargamos el path que es solo el nombre de la carpeta Helpers puede estar cualquier lugar que dedicas
            
'basePath'  => dirname(__FILE__),//esto lo dejamos asi nos da la ruta completa de la aplicacion o puedes usar la constante APPLICATION_PATH ."/Views/"APPLICATION_PATH ."/Views"   o  deberia funcionarte
        
));
    
         
$autoloader->load("Helpernombre");//cargamos nuestro helper en mi caso se llama empresita
        
return $autoloader;

    } 




que sucede que por arte de magia el deberia cargarte los archivos a pero cual es el truco sucede que apache y zend framework usan un pequeño modulo llamado mo rewrite este modulo se encarga de reescribir la configuracion de apache y cuando usamos este archivo .htacces
Código PHP:
SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteCond 
%{REQUEST_FILENAME} -[OR]
RewriteCond %{REQUEST_FILENAME} -[OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule 
^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L
le estamos diciendo que toda peticion que hagamos la redirija al index.php, que sucede que todo lo que hagamos en tiempo en ejecucion se redirije al index.php
si tienemos un directorio que esta en la luna y lo incluimos en el sistema que hagamos y lo cargamos de la forma que nos guste este lo redirijira la peticion al index.php sin el mod rewrite hay que ser un hackerbarbaro de los años 80 y cortar monitores por la mitadXD con un acha.

bien que es lo que vamos a hacer hoy me frustre todo el dia tratando de ver como hacer un sistema pase por cakephp, hasta me puse a imaginar en symfony y implementar zf con symfony, pero nop, asi que me puse a leer la documentacion de zend me maree me volvi como loco hasta que comprendi mas o menos la cosa

es por eso que aqui les dejo un ejemplo de como conectar la base de datos al modelo de zend usando zend_db_abstrac como clase prinpicpal para realizar consultas y guardados de datos a la base de datos.

ojo yo uso mysql

Código HTML:
[production]
#configuraciones del php
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
##incluyo el path de las librerias
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
## defino la carpeta controllers
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
##defino el layou
resources.layout.layout = "layout"
resources.layout.layoutPath = APPLICATION_PATH "/layout"
##Parte de la conexion ala base de datos
##driver Pdo no olvides activar las Pdo extension
resources.db.adapter = "pdo_mysql" 
resources.db.params.host = "localhost"
resources.db.params.username = "user"
resources.db.params.password = "password"
resources.db.params.dbname = "table"
resources.db.isDefaultTableAdapter = true
[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
esta la parte de la application.ini

y esta la del boostrap
Código HTML:
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initPluginResource(){
//funcion que usa el adaptador
$dbs=$this->getPluginResource("db");//obtenemos el recurso db del applicaction.ini
$adaptador=$dbs->getAdapter();//si buscas en la api te aparecera este metodo

$db = Zend_Db::factory($adaptador,$dbs->getParams());
//$db->getConnection(); ya no es necesario se coneta automatico
Zend_Db_Table_Abstract::setDefaultAdapter($db);//necesario si usas ZendDbAbstract

//Return $dbs;
}
 protected function _initAutoload()
    {//definimos el modelo
          $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'models',//aca cargamos el path que es solo el nombre de la carpeta models
            'basePath'  => dirname(__FILE__),//esto lo dejamos asi nos da la ruta completa de la aplicacion
        ));
    
         $autoloader->load("Empresita");//cargamos nuestro modelo en mi caso se llama empresita
        return $autoloader;

    } 

}


el parte del modelo la clase nos queda de esta manera

nombre de archivo modelito.php -> se guarda en la carepta models

Código HTML:
<?php


/**
 *  el modelo nos queda con ese nombre 
 *Models_Model_Empresita para que el  
 *Zend_Application_Module_Autoloader lo pueda cargar si no lanza error 
 */
class Models_Model_Empresita extends Zend_Db_Table_Abstract {
    //put your code here
   protected $_name="empresas";
   public static function alls(){
       $todos=new Models_Model_Empresita();
       return $todos->fetchAll();


   }
}

yo use Zend_Application_Module_Autoloader para cargar los modelos derrepente
hay otra clase ,ademas
todo lo que hay es que estar pendiente cuales son los metodos ini que usa el boostrap y zend_applicacitions ya que en algunos casos por ignorancia se puede decir que algunos estan mesclados(claro los metodosXD ), de todos modos algunos ejemplos son supociciones, de todos modos tambien pueden leer los comentarios que deje en el code espero que les sirva algunos saludos
  #2 (permalink)  
Antiguo 15/06/2009, 11:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Zend Application Ejemplo zend framework 1.8

Gracias zfStuden!

Yo tambien estoy entreverado con zend_application y zend_tool.
  #3 (permalink)  
Antiguo 16/06/2009, 10:59
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Zend Application Ejemplo zend framework 1.8

Amigos, estoy viendo zend application y me surgio una duda.
Se necesita una clase Bootstrap para toda la aplicacion o se requiere una por modulo?

Saludos.
  #4 (permalink)  
Antiguo 16/06/2009, 12:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Application Ejemplo zend framework 1.8

Se requiere una inicialmente por aplicacion, y luego puedes tener un bootstrap si lo requieres por modulo aunque no es obligatorio.

Saludos.
  #5 (permalink)  
Antiguo 16/06/2009, 18:18
Avatar de zfStuden  
Fecha de Ingreso: abril-2009
Mensajes: 109
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Zend Application Ejemplo zend framework 1.8

Cita:
Iniciado por ramonw Ver Mensaje
Amigos, estoy viendo zend application y me surgio una duda.
Se necesita una clase Bootstrap para toda la aplicacion o se requiere una por modulo?

Saludos.
no creo que es para toda la aplicacion lo que tienes es que configurarla para todos los modulos
osea en el archivo application.ini le das esa opcion me imagino que es en el view

osea algo asi
antes
Código HTML:
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
depues agregas esto al application.ini deberia reconocerte los modulos
Código HTML:
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
  #6 (permalink)  
Antiguo 21/07/2009, 06:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 178
Antigüedad: 17 años
Puntos: 1
Respuesta: Zend Application Ejemplo zend framework 1.8

Hola compañeros,
leyendo el post me surgió la duda, veo que el modelo esta creado de la siguiente manera:
Código PHP:
class Models_Model_Empresita extends Zend_Db_Table_Abstract 
Tenia entendido que el modelo se creaba asi:
Código PHP:
class UsuariosModel extends Zend_Db_Table
{

O sea nombre de la tabla seguido de la palabra Model y extendiendo a Zend_Db_Table.
Porque se crea asi el modelo ahora? (como el primer ejemplo).

Se nota que estuve medio alejado de ZendFramework, saludos.
  #7 (permalink)  
Antiguo 21/07/2009, 08:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Application Ejemplo zend framework 1.8

Esto es porque el nuevo Autoloader requiere que esten separados por el _ para poder cargarlos de forma automática.

Por otro lado es mejor usar Zend_Db_Table_Abstract ya que es la clase padre y Zend_Db_Table solo es una implementación no agrega nada y mucho métodos esperan el _Abstract cuando se pasan.

Saludos.
  #8 (permalink)  
Antiguo 21/07/2009, 19:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 178
Antigüedad: 17 años
Puntos: 1
Respuesta: Zend Application Ejemplo zend framework 1.8

Gracias GatorV, entonces en el ejemplo antes mencionado
Código PHP:
class Models_Model_Empresita extends Zend_Db_Table_Abstract 
Models, viene a ser el modulo.
Model, el Model de ese moudulo.
Empresita, seria empresita.php

Estoy en lo cierto?
  #9 (permalink)  
Antiguo 21/07/2009, 20:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Application Ejemplo zend framework 1.8

Algo así, por ejemplo un model del modulo Default sería:
Código:
Default_Model_DbTable_Tabla extends Zend_Db_Table_Abstract
Es importante el _Model_DbTable porque asi lo busca el Autoloader.

Saludos.
  #10 (permalink)  
Antiguo 22/07/2009, 07:44
 
Fecha de Ingreso: diciembre-2007
Mensajes: 178
Antigüedad: 17 años
Puntos: 1
Respuesta: Zend Application Ejemplo zend framework 1.8

Perdon GatorV, el codigo que pusiste me genero una duda

Default es el modulo, Model el modelo, Tabla el nombre de la tabla; que significa DbTable?
  #11 (permalink)  
Antiguo 22/07/2009, 08:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Application Ejemplo zend framework 1.8

DbTable es la convención que se usa para destacar que un Model hereda de Zend_Db_Table_Abstract, la idea es que se use ahora el patrón Data Mapper que separa del Model la capa de abstracción para que en caso de ser necesario se pueda mover el source de la tabla.

Saludos.
  #12 (permalink)  
Antiguo 29/09/2009, 21:31
 
Fecha de Ingreso: marzo-2006
Mensajes: 47
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Zend Application Ejemplo zend framework 1.8

Una pregunta de novato con Zend. Y si algún modelo se usa en 2 módulos? Tendria que crear una carpeta models en la misma jerarquia que modules?
Y como seria la convencion de nombres? Igual, quitando el nombre del módulo?

Desde ya muchas gracias.-
  #13 (permalink)  
Antiguo 29/09/2009, 22:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Zend Application Ejemplo zend framework 1.8

Puedes ponerlo en cualquiera de las dos carpetas, el nuevo autoloader de Zend_Application puede cargarlas desde cualquier modulo.

Saludos.
  #14 (permalink)  
Antiguo 30/09/2009, 07:23
 
Fecha de Ingreso: marzo-2006
Mensajes: 47
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Zend Application Ejemplo zend framework 1.8

Muchas 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.
Tema Cerrado




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