Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/06/2009, 00:38
Avatar de zfStuden
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