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

[SOLUCIONADO] Multiple Bootstrap

Estas en el tema de Multiple Bootstrap en el foro de Zend en Foros del Web. Que tal buenas tardes a todos... espero puedan ayudarme con este problemilla que tengo. Estoy tratando de utilizar un Boostrap , por cada modulo del ...
  #1 (permalink)  
Antiguo 18/02/2013, 15:21
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Pregunta Multiple Bootstrap

Que tal buenas tardes a todos... espero puedan ayudarme con este problemilla que tengo. Estoy tratando de utilizar un Boostrap, por cada modulo del que dispongo, pero he tenido problemas para lograrlo, ya que me sale el siguiente error:
Código PHP:
No default controller directory registered with front controller 
He probado con las siguientes lineas:
Código PHP:
resources.modules "" 
esta otra:
Código PHP:
resources.modules[] = "" 
asi mismo estas otras lineas:
Código PHP:
resources.frontController.params.prefixDefaultModule "" 
y esta otra:
Código PHP:
resources.frontcontroller.params.prefixDefaultModule true 
espero me puedan orientar para lograr levantar el proyecto. (Uso ZF 1.11)
Tengo la siguiente estructura:
Código PHP:
-| application
---| configs
-----| application.php
---| forms
---| languagues
---| modules
-----| front
-------| controllers
---------| IndexController.php
---------| ...
-------| 
template
---------| layout.phtml
-------| views
---------| scripts
-----------| index
-------------| index.phtml
-----------| ...
---------| 
Bootstrap.php
------| admin
-------| ...
-----| 
Bootstrap.php 
Mi application.ini:
Código PHP:
[production]
Debug Options
phpSettings
.display_startup_errors 0
phpSettings
.display_errors 0

; Include path
includePaths
.library APPLICATION_PATH_LIBRARY

Bootstrap
bootstrap
.path APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

Namespace
appnamespace 
"GC"

Bootstrap resources:
; -> 
Front Controller With Modules
resources
.frontController.prefixDefaultModule 0
resources
.frontController.moduleDirectory APPLICATION_PATH_MODULE
resources
.frontController.controllerDirectory.default = APPLICATION_PATH_MODULE "/front/controllers"
resources.frontController.moduleControllerDirectoryName "controllers"

resources.frontController.defaultModule "front"
resources.frontController.params.displayExceptions 0
resources
.modules = []

;
resources.
; -> 
Layout Front
resources
.layout.layoutPath APPLICATION_PATH_MODULE "/front/template/"
resources.view.helperPath APPLICATION_PATH_MODULE "/front/views/helpers"
resources.frontController.controllerDirectory.default = APPLICATION_PATH_MODULE "/front/controllers"

; -> Layout Admin
admin
.resources.layout.layoutPath APPLICATION_PATH_MODULE "/admin/template/"
admin.resources.view.helperPath APPLICATION_PATH_MODULE “/admin/views/helpers”
admin
.resources.frontController.controllerDirectory.gcmanager APPLICATION_PATH_MODULE "/admin/controllers" 
Archivo: application/bootstrap.php
Código PHP:
class Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function 
_initStart()
    {
        echo 
'Application/Bootstrap';
    }

Archivo: application/modules/front/bootstrap.php
Código PHP:
class Front_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function 
_initStart()
    {
        echo 
'Front/Bootstrap';
    }

Archivo: application/modules/admin/bootstrap.php
Código PHP:
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function 
_initStart()
    {
        echo 
'Admin/Bootstrap';
    }

Archivo: public/index.php
Código PHP:
// Define path to application directory
defined('APPLICATION_PATH')
|| 
define('APPLICATION_PATH'realpath(dirname(__FILE__) . '/../application'));

// Define enviroment on current application
defined('APPLICATION_ENV')
    || 
define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Configuracion de recursos para el Boostrap
define('APPLICATION_PATH_SETUP'APPLICATION_PATH '/setup');
// Libreria Zend
define('APPLICATION_PATH_CORE'APPLICATION_PATH '/../../../../Zend/library');
// Librerias Propias 
define('APPLICATION_PATH_LIBRARY'APPLICATION_PATH '/../library');
// Path de los modelos
define('APPLICATION_PATH_MODEL'APPLICATION_PATH '/models');
// Path Modulos
define('APPLICATION_PATH_MODULE'APPLICATION_PATH '/modules');
// Archivo de configuracion
define('APPLICATION_PATH_CONFIG'APPLICATION_PATH '/configs');
// Idioma de la aplicacion
define('APPLICATION_PATH_LANGUAGE'APPLICATION_PATH '/languages');
// Path donde se guardan los temporales de la aplicacion, sesions, bd, pages, etc
define('APPLICATION_PATH_CACHE'APPLICATION_PATH '/../data/cache');
// Path Publico
define('APPLICATION_PATH_PUBLIC'APPLICATION_PATH '/../public');

// Include paths
set_include_path(
    
implode(
        
PATH_SEPARATOR,
        array(
            
realpath(APPLICATION_PATH_SETUP),
            
realpath(APPLICATION_PATH_CORE),
            
realpath(APPLICATION_PATH_LIBRARY),
            
realpath(APPLICATION_PATH_MODEL)
        )
    )
);

/** Zend_Application */
require_once 'Zend/Application.php';
try{
    
// Create application, bootstrap, and run
    
$application = new Zend_Application(
        
APPLICATION_ENV,
        
APPLICATION_PATH_CONFIG '/application.ini'
    
);
    
// Run Application
    
$application->bootstrap()
                ->
run();
} catch(
Zend_Exception $e){
    print 
'<pre>' $e->getMessage() . '</pre>';

__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #2 (permalink)  
Antiguo 18/02/2013, 17:51
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: Multiple Bootstrap

Es un tema bastante conocido, has intentado lo que sugiere san google ?, fuera de esto, el Bootstrap "principal" (application/bootstrap.php) a diferencia del de los módulos debe extender de Zend_Application_Bootstrap_Bootstrap

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 19/02/2013, 15:14
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Pregunta Respuesta: Multiple Bootstrap

Gracias por responder.

Efectivamente he probado lo que me mencionas... reemplazando: Zend_Application_Module_Bootstrap por Zend_Application_Bootstrap_Bootstrap, y pareciera que se generara un bucle de peticiones por que me sale esto:
Código PHP:
Application/Bootstrap
Front
/Bootstrap
Admin
/Bootstrap
Front
/Bootstrap
Admin
/Bootstrap
Front
/Bootstrap
Admin
/Bootstrap
....
Fatal errorMaximum function nesting level of '100' reachedabortingin K:wampZendlibraryZendLoaderPluginLoader.php on line 147 
Y fue san google que me recomendaba colocarlo tal como esta... quizas haya algo mas que se tenga que hacer??
Incluso he agregado estas lineas segun san google:

Código PHP:
front.bootstrap.path APPLICATION_PATH_MODULE "/front/Bootstrap.php"
front.bootstrap.class = "Front_Bootstrap" 
Lo mismo para el admin... pero sigue sin funcionar...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #4 (permalink)  
Antiguo 19/02/2013, 15:44
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: Multiple Bootstrap

Es difícil ayudarte ya que no estas siguiendo las convenciones de Zend, hay alguna razón para todas esas constantes ?, para modificar el namespace ?, demasiada configuración relacionada a lo mismo tiene ese application.ini, lo único que necesita Zend es esto:

application.ini
Código INI:
Ver original
  1. [production]
  2. phpSettings.display_startup_errors = 0
  3. phpSettings.display_errors = 0
  4. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  5. bootstrap.class = "Bootstrap"
  6. appnamespace = "Application"
  7. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  8. resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
  9. resources.modules[] = ""
  10.  
  11. [development : production]
  12. resources.frontController.params.displayExceptions = 1
  13. phpSettings.display_startup_errors = 1
  14. phpSettings.display_errors = 1

index.php
Código PHP:
Ver original
  1. // Define path to application directory
  2. defined('APPLICATION_PATH')
  3.     || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
  4.  
  5. // Define application environment
  6. defined('APPLICATION_ENV')
  7.     || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
  8.  
  9. // Ensure library/ is on include_path
  10. set_include_path(implode(PATH_SEPARATOR, array(
  11.     realpath(APPLICATION_PATH . '/../library'),
  12. )));
  13.  
  14. /** Zend_Application */
  15. require_once 'Zend/Application.php';
  16.  
  17. // Create application, bootstrap, and run
  18. $application = new Zend_Application(
  19.     APPLICATION_ENV,
  20.     APPLICATION_PATH . '/configs/application.ini'
  21. );
  22. $application->bootstrap()
  23.              ->run();

te sugiero que elimines todo lo que tienes de mas y vayas modificando de a poco o mejor aún elimina todo lo que esta de mas y apégate a los estándares del fw.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 19/02/2013, 16:55
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Pregunta Respuesta: Multiple Bootstrap

Masterpuppet, gracias por responder nuevamente.
Seguí tu consejo, borre todo y de 0 y utilice el application.ini y index.php, que publicaste.
Tengo mi estructura:
Código PHP:
-| application 
---| configs 
-----| application.php 
---| modules 
-----| default
-------| 
controllers 
---------| IndexController.php 
---------| ... 
-------| 
views 
---------| scripts 
-----------| index 
-------------| index.phtml 
-----------| ... 
---------| 
Bootstrap.php 
------| admin 
-------| ... 
-----| 
Bootstrap.php 
Tengo mi application/bootstrap.php
Código PHP:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function 
_initStart()
    {
        echo 
'Application/Bootstrap<br/>';
    }

Mi application/modules/default/bootstrap.php
Código PHP:
class Default_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function 
_initStart()
    {
        echo 
'Default/Bootstrap<br/>';
    }

Mi application/modules/admin/bootstrap.php
Código PHP:
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function 
_initStart()
    {
        echo 
'Admin/Bootstrap<br/>';
    }

Y el resultado en el navegador (http://zf-modules.zf) es este:
Código PHP:
Application/Bootstrap
Admin
/Bootstrap
Default/Bootstrap
Deafault
/Index/index 
Lo mismo sucede cuando ingreso al admin. Por lo que entiendo se esta ejecutando los 3 bootstrap. Y lo que deseo es que se ejecute el bootstrap por modulo, algo asi:
Si entro a http://zf-modules.zf, deberia quedar asi:
Código PHP:
Application/Bootstrap
Default/Bootstrap
Deafault
/Index/index 
Puesto que deseo cargar opciones independientes por modulo.
Algo que este haciendo mal??? o es que así funciona ZF ??
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #6 (permalink)  
Antiguo 19/02/2013, 17:04
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: Multiple Bootstrap

Funciona así, en cada Request se ejecutan todos los bootstrap's, para lo que tu quieres lograr en Zf1 puedes utilizar plugin's y en estos evalúas el modulo, otra opción mejor aún seria pasarse directamente a Zf2 el cual tiene entre otras cosas módulos de verdad.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 19/02/2013, 17:18
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Respuesta: Multiple Bootstrap

Ok, no hay mas que decir, a revisar zf2, gracias por el apoyo.
Saludos.
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...

Etiquetas: bootstrap
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 09:38.