chargement des skins avec [ZF]

Petit nouveau ! | 2 Messages

02 juin 2011, 18:01

Bonjour à tous... Depuis peu j'ai un problème avec le chargement de mes styles avec ZF en utilisant Zend_Config_Xml...
je vous demande donc de l'aide, car je galère...merci

... en effet...
voici la stucture de mon appli

Code : Tout sélectionner

application configs controllers models view helper // dans helper j'ai crée une classe d'aide LoadSkin qui contient une methode loadSkin($skin) Zend_View_Helper_LoadSkin.php qui étend Zend_View_Helper_Abstract
la class est la suivante:
 class Zend_View_Helper_LoadSkin extends Zend_View_Helper_Abstract
      {

       public function loadSkin($skin){
             $xmlData = new Zend_Config_Xml('./skins/'.$skin.'/skin.xml');
            $stylesheets = $xmlData->stylesheets->stylesheet->toArray();
            if(is_array($stylesheets)){
            foreach ($stylesheets as $stylesheet) {
               $this->view->headLink()->prependStylesheet('/skins/'.$skin.'/css/'.$stylesheet);
            }
        }
     }    
}
apres quoi, j'ai la fonction _initView dans le Bootstrap:
protected  function _initView(){
        // initialisation de la vue
        $view = new Zend_View();
        $view->doctype('XHTML1_STRICT');
        $view->headTitle('Applicati on Web 2.0');
        // assigne une variable à la vue pour le skin
        $view->skin = 'blues';   // la variable du skin
        //configuration de JQuery
        $view->addHelperPath('ZendX/JQuery/View/Helper','ZendX_JQuery_View_Helper');
        $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
        $viewRenderer->setView($view);
        Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
        // retourn la vue
        return $view;
    }
et enfin j'ai le fichier Xml à charger qui a la sturcture suivante:

Code : Tout sélectionner

<skin> <stylesheets> <stylesheet>layout.css</stylesheet> <stylesheet>text.css</stylesheet> </stylesheets> </skin>
puis finalement dans le layout, je fais l'appel de loadSkin($this->skin) pour activer le style, mais cela ne marche pas...
je veux dire le style n'est pas appliqué... quelqu'un pourrait m'apporter de l'aide s'il vous plait.. merci

Preetee Gangoosirdar
Invité n'ayant pas de compte PHPfrance

08 juin 2011, 19:11

La application de votre structure doit
application
configs
controllers
models
view
helper
--LoadSkin.php

le helper loadSkin.php
<?php

/**
  * this class loads the cms skin
 *
 *
/

class Zend_View_Helper_LoadSkin extends Zend_View_Helper_Abstract
{
public function loadSkin ($skin)
{
// load the skin config file
$skinData = new Zend_Config_Xml('./skin/'.$skin.'/skin.xml');
$stylesheets = $skinData->stylesheets->stylesheet->toArray();
// append each stylesheet
if (is_array($stylesheets)) {
foreach ($stylesheets as $stylesheet) {
  $style=$this->view->headLink()->appendStylesheet('/skin/' . $skin .'/css/' . $stylesheet);
}
}
return $style;
}
}
Dans le fichier boostrap.php
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
        protected function _initView()
        {
            // Initialize view
            $view = new Zend_View();
            $view->doctype('XHTML1_STRICT');
            $view->headTitle('Zend CMS');
            $view->skin = 'blues';
            // Add it to the ViewRenderer
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
            $viewRenderer->setView($view);
            // Return it, so that it can be stored by the bootstrap
            return $view;
        }

        
}


Dans le repetoire skin disont que vous avec le theme blue et le fichier skin.xml
public/
-skin/
-blues/
-css/
layout.css
text.css
-images/
-skin.xml




Maintenant dans le fichier skin.xml

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?> <skin> <stylesheets> <stylesheet>layout.css</stylesheet> <stylesheet>text.css</stylesheet> </stylesheets> </skin>
Dans le layout
dans le head balise
<?php 
          echo $this->loadSkin($this->skin);
          
         ?>
Bonne chance :)