Zend framework ¿Especificando la implementación de los directorios del controlador del módulo?

Estoy tratando de crear una estructura modular para el proyecto zend framework, lo que estoy tratando de hacer es crear un módulo que se verá así

docroot/
    index.php
application/
    default/
        controllers/
            IndexController.php
            FooController.php
        models/
        views/
            scripts/
                index/
                foo/
            helpers/
            filters/
    blog/
        controllers/
            IndexController.php
        models/
        views/
            scripts/
                index/
            helpers/
            filters/
    news/
        controllers/
            IndexController.php
            ListController.php
        models/
        views/
            scripts/
                index/
                list/
            helpers/
            filters/

lo que no puedo entender después de leer la documentación es dónde agregar el siguiente código o debo refactorizar /zendlibrary/Controller/front.php?

$front->setControllerDirectory(array(
    'default' => '/path/to/application/controllers',
    'blog'    => '/path/to/application/blog/controllers'
));

OR

$front->addControllerDirectory('/path/to/application/news/controllers',
                               'news');

preguntado el 03 de mayo de 12 a las 20:05

La solución es algo diferente. Hemos hecho esto, pero no tengo tiempo para desenterrar el código. Gran parte reside en la configuración. -

Una pregunta, ¿es prudente poner el código de su aplicación debajo de su docroot? ¿No debería estar encima de su docroot? -

3 Respuestas

Agregar un método a su programa de arranque es probablemente la forma más fácil:

protected function _initFrontController()
{
    $front = Zend_Controller_Front::getInstance();
    $front->setControllerDirectory(array(
        'default' => APPLICATION_PATH.'/default/controllers',
        'blog'    => APPLICATION_PATH.'/blog/controllers'
    ));

    return $front;
}

contestado el 04 de mayo de 12 a las 09:05

En primer lugar, cuando hicimos esto pusimos módulos en aplicación/módulos/ en lugar de aplicación/

En configuración (application/configs/configuration.ini), necesitará algo como esto:

[bootstrap]

Autoloadernamespaces[] = "Zend_"
Autoloadernamespaces[] = "default_"
Autoloadernamespaces[] = "blog_"
Autoloadernamespaces[] = "news_"


resources.frontController.moduleDirectory = APPLICATION_PATH "modules"
resources.frontController.defaultModule = "default"
resources.frontController.prefixDefaultModule = 1
resources.frontController.throwErrors = true

resources.modules[] = "default"
resources.modules[] = "blog"
resources.modules[] = "news"
resources.layout.layout = "layout"

resources.view.encoding = "UTF-8"
resources.view.basePath = APPLICATION_PATH "modules/default/views/"

Puede haber algo más, avíseme si esto ayuda.

contestado el 03 de mayo de 12 a las 20:05

no, seguirá presionando el módulo predeterminado cuando pida el controlador del administrador, así que lo que quiero hacer cuando pongo localhost/Admin/index irá a ese directorio, no solo ignorará el directorio y dará un error de que el el administrador del controlador no está allí - dori naji

¿Has probado Herramienta Zend?

Es tan fácil como esto:

zf create module mymodule

Lea más en la publicación de Akrabat Módulos de arranque en ZF.

Puede crear fácilmente controladores, acciones, modelos, formularios dentro del módulo usando la línea de comando. La herramienta generará todo por ti.

contestado el 04 de mayo de 12 a las 10:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.