chargement des skins avec [ZF]

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : chargement des skins avec [ZF]

Re: chargement des skins avec [ZF]

par Preetee Gangoosirdar » 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 :)

chargement des skins avec [ZF]

par jarode » 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