IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

un layout pour chaque module svp.


Sujet :

MVC PHP

  1. #1
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut un layout pour chaque module svp.
    Bonjour à tous,

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

    Voici mon application.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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('titre?');
    	}
    Comment faire ?

    Merci à tous

    Fabrice

  2. #2
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut
    Alors ?, personne ne sais ?

    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Points : 71
    Points
    71
    Par défaut
    As tu une classe mère propre à chacun de tes modules?

    Si oui, dans le init de celle ci initialise le chemin de ton nouveau layout par module.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/07/2010, 00h38
  2. Tous les tests sont lancés pour chaque module
    Par Baptiste Wicht dans le forum Maven
    Réponses: 11
    Dernier message: 22/03/2010, 17h34
  3. Zend_Layout => définition du layoutPath pour chaque module
    Par lalouve dans le forum Zend Framework
    Réponses: 3
    Dernier message: 16/04/2008, 23h50
  4. Réponses: 3
    Dernier message: 23/01/2004, 21h02
  5. [Composants] TRichEdit: Une police pour chaque ligne
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/03/2003, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo