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 :

Zend_View_Helper_HeadMeta et nouvelle balise META


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 71
    Par défaut Zend_View_Helper_HeadMeta et nouvelle balise META
    Bonjour à tous,

    Je suis confronté à un problème plutôt fâcheux pour lequel je ne trouve aucune solution.
    Je compte sur vous

    Je souhaite ajouter de nouvelles META à certaines de mes pages.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta property="og:title" content="The Rock"/>
    Et tout le problème est là, impossible de créer une META "property"...
    J'ai tenté d'étendre Zend_View_Helper_HeadMeta en vain.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
     
    class monProjet_View_Helper_HeadMeta extends Zend_View_Helper_HeadMeta
    {
        protected $_typeKeys     = array('name', 'http-equiv', 'charset', 'property');
     
        public function __call($method, $args)
        {
            if (preg_match('/^(?P<action>set|(pre|ap)pend|offsetSet)(?P<type>Name|HttpEquiv|Property)$/', $method, $matches)) {
                $action = $matches['action'];
                $type   = $this->_normalizeType($matches['type']);
                $argc   = count($args);
                $index  = null;
     
                if ('offsetSet' == $action) {
                    if (0 < $argc) {
                        $index = array_shift($args);
                        --$argc;
                    }
                }
     
                if (2 > $argc) {
                    require_once 'Zend/View/Exception.php';
                    $e = new Zend_View_Exception('Too few arguments provided; requires key value, and content');
                    $e->setView($this->view);
                    throw $e;
                }
     
                if (3 > $argc) {
                    $args[] = array();
                }
     
                $item  = $this->createData($type, $args[0], $args[1], $args[2]);
     
                if ('offsetSet' == $action) {
                    return $this->offsetSet($index, $item);
                }
     
                $this->$action($item);
                return $this;
            }
     
            return parent::__call($method, $args);
        }
     
        protected function _normalizeType($type)
        {
            switch ($type) {
                case 'Property':
                    return 'property';
                default:
                    return parent::_normalizeType($type);
            }
        }
     
    }
    Une petite piste s'il vous plaît?
    J'espère vous lire très bientôt,

    Omageus

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    simplement comme ca il veux bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Custom_Zend_View_Helper_HeadMeta extends Zend_View_Helper_HeadMeta
    {
        protected $_typeKeys = array('name', 'http-equiv', 'charset', 'property');		
    }
     
    $meta = new Custom_Zend_View_Helper_HeadMeta();
    $meta->headMeta('The Rock', 'og:title', 'property');
     
    echo $meta->toString();

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 71
    Par défaut
    Merci de ta réponse,

    Cela fait bien le rendu des META mais :
    - Lance un warning
    Invalid type "property" provided for meta
    - Inscrit les META dans le body

    J'aimerai vraiment réussir à les intégrer au head
    Dur d'être bloqué sur de si petites choses.

    Une idée de ce que je peux faire?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    comment tu fais au niveau de ton layout ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 71
    Par défaut
    Un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <?php
     
        echo $this->headTitle();
        echo $this->headMeta();
        echo $this->headLink();
        echo $this->headScript();
     
        ?>
    Je ne l'ai pas spécifié et c'était une erreur, mais la nouvelle META ne doit être que sur certaines pages et donc ajoutée par le controlleur à la vue.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Lenézé Voir le message
    Un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <?php
     
        echo $this->headTitle();
        echo $this->headMeta();
        echo $this->headLink();
        echo $this->headScript();
     
        ?>
    Je ne l'ai pas spécifié et c'était une erreur, mais la nouvelle META ne doit être que sur certaines pages et donc ajoutée par le controlleur à la vue.
    justement montre ce que tu fais au niveau de ton controller

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/12/2010, 10h20
  2. Réponses: 6
    Dernier message: 01/12/2010, 13h30
  3. balise meta
    Par donny dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/05/2005, 19h14
  4. [.NET][XSLT] balise META
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/05/2005, 11h35

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