Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-09-2009 00:29:21

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

ZF 1.8 // Un layout pour chaque module

Bonjour à tous,

Je viens de commencer une petit appli modulaire.
J'ai fond la partie "default" et l' "admin".

Voici mon application.ini :

Code:

resources.modules[] =

default.resources.layout.layout = default
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

admin.resources.layout.layout = admin
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

J'ai un helper d'action qui gere les modules :

Code:

class Qda_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract
{
    public function preDispatch()
    {
        $bootstrap = $this->getActionController()->getInvokeArg('bootstrap');
        $config = $bootstrap->getOptions();
        $moduleName = $this->getRequest()->getModuleName();

        if (isset($config[$moduleName]['resources']['layout']['layout'])) {
            $layoutScript = $config[$moduleName]['resources']['layout']['layout'];
            $this->getActionController()
            ->getHelper('layout')
            ->setLayout($layoutScript);
        }
/*
        if (isset($config[$moduleName]['resources']['layout']['layoutPath'])) {
            $layoutPath = $config[$moduleName]['resources']['layout']['layoutPath'];
            $moduleDir = Zend_Controller_Front::getInstance()->getModuleDirectory();

            Zend_Layout::getMvcInstance()->setLayoutPath(
            $moduleDir. DIRECTORY_SEPARATOR .$layoutPath
            );
        }*/
    }

}

Jusque là, tout marche.

Mais j'aimerai bien avoir un layout PAR module. J'ai donc essayer de jouer avec resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
.mais si je fais :

Code:

default.resources.layout.layout = default
default.resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

admin.resources.layout.layout = admin
admin.resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

Le bootStrap ne trouve plus le layout de l'admin  : Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "layout" not found' in.

Code:

protected function _initLayoutHelper()    {
        $this->bootstrap('frontController');
        $layout = Zend_Controller_Action_HelperBroker::addHelper(
        new Qda_Controller_Action_Helper_LayoutLoader());
    }

    function _initViewHelpers()    {
        $this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();

        $view->doctype('XHTML1_STRICT');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
        $view->headTitle()->setSeparator(' - ');
        $view->headTitle('Quoi d\'autre ?');
    }

Comment faire ?

Merci à tous

Fabrice

Hors ligne

 

#2 14-09-2009 01:08:15

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: ZF 1.8 // Un layout pour chaque module

J'ai à peu près la même chose :
http://www.z-f.fr/forum/viewtopic.php?i … p=2#p21529
Chez moi ça marche


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#3 14-09-2009 08:48:50

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: ZF 1.8 // Un layout pour chaque module

Salut,

Merci

oui, c pareil en fait. Mais déjà je comprends par pourquoi je dois mettre le "default" dans :

Code:

default.resources.layout.layout = default

Ou alors je dois tester le $moduleName dans le helper_LayoutLoader

Fabrice

Hors ligne

 

#4 15-09-2009 09:50:52

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: ZF 1.8 // Un layout pour chaque module

Par contre, j'ai vu que j'ai bien un layout (/layouts/scripts/admin.phtml) dans le dossier de base mais pas dans celui du module.

Fabrice

Hors ligne

 

#5 15-09-2009 11:06:05

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: ZF 1.8 // Un layout pour chaque module

Tu mets tous les layouts dans le meme dossier ou tu les sépares ? au quel cas faut changer cette ligne :

Code:

admin.resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#6 15-09-2009 19:42:35

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: ZF 1.8 // Un layout pour chaque module

J'aurai aimé les mettre dans /modules/admin/layouts/scripts

Là, ils sont dans le meme dossier que les autres layouts.

Et je sais pas trop comment faire. Si je change juste le dossier, je vais devoir surement modifier le bootstrap, etc, non ?

Fabrice

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages