Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-03-2013 16:33:36

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

[Résolu] Afficher le titre de la page

Bonjour,

Quelle est la bonne practice pour afficher le titre de la page ?

Pour l'instant je fais comme ci-dessous :

Code:

[lang=php]
// Dans une view 
<?php $this->headTitle("Titre de ma page"); ?>

Code:

[lang=php]
// Dans le layout
<?php 
$title = $this->headTitle();
echo ($title[0] !== 'SiteName') ? '<h1>'.$title[0].'</h1>' : ''; 
?>

Je trouve ça très moche, je n'ai rien trouvé dans le framework, ai-je mal cherché ?

Merci

Dernière modification par alien7 (29-03-2013 13:11:41)


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

Hors ligne

 

#2 04-03-2013 19:19:57

jfvole
Membre
Date d'inscription: 20-11-2010
Messages: 69

Re: [Résolu] Afficher le titre de la page

Bonsoir,

Je pars du principe que le Head Title et mon ou mes titre(s) ne sont pas forcement les mêmes.

- HeadTitle : Mon Titre Court - Mon Site
- Title : Mon titre long I + un sous titre I +  titre II , titre III etc...

Mon Head title se situe dans le Layout alors que les titres seront dans la vue, en dure la plus part du temps ou dépendant d'un objet global a la vue. Un enregistrement data base par exemple, passé en paramètre.

JFV

Dernière modification par jfvole (04-03-2013 19:21:59)

Hors ligne

 

#3 25-03-2013 17:27:20

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

Re: [Résolu] Afficher le titre de la page

Un ptit up, j'ai toujours trouvé de solution

Merci


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

Hors ligne

 

#4 25-03-2013 17:37:29

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] Afficher le titre de la page

Salut Alien7 on t'a répondu c'est pour ça que personne n'a sur-enchéri. Ca passe par l'aide de vue headTitle que tu peux prendre soit une chaine en dur ou une variable passée à la vue par le contrôleur comme paramètre. Tu peux aussi définir des séparateurs pour avoir un titre global pour ton application, celui-ci on le met dans le layout et un "sous titre" de page dans la vue.

Grosso modo si tu choisis le séparateur "/" tu auras un titre du genre "Ma page / Mon nom d'application"

Hors ligne

 

#5 27-03-2013 11:05:16

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

Re: [Résolu] Afficher le titre de la page

Ce que je voulais c'est mettre justement mon titre dans le layout et non dans les views.
Avoir dans mon layout :
<h1>Mon titre</h1>
D'ou mon 1er post, bon pas grave je vais me débrouiller autrement.


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

Hors ligne

 

#6 28-03-2013 14:20:28

Polzie
Membre
Date d'inscription: 12-03-2010
Messages: 20

Re: [Résolu] Afficher le titre de la page

Je ne comprends pas bien ce que tu veux faire à vrai dire.
HeadTitle c'est un viewHelper pour définir le titre de la page dans le navigateur (dans la balise <head>), pas pour les titres html.
Maintenant si tu veux écrire le même titre que tu as dans ton navigateur, mais dans ta page, bah fais comme tu as déjà fait...

Hors ligne

 

#7 28-03-2013 14:55:49

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

Re: [Résolu] Afficher le titre de la page

Bah oui mais c'est juste que c'est moche. Il n'y a aucune méthode dans le framework qui permet de faire ça proprement. Pour moi il y a une erreur de conception.

Dernière modification par alien7 (28-03-2013 14:58:00)


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

Hors ligne

 

#8 28-03-2013 19:15:33

Polzie
Membre
Date d'inscription: 12-03-2010
Messages: 20

Re: [Résolu] Afficher le titre de la page

bah au pire en 5.4...

Code:

<h1><?php echo ($this->headTitle()[0] === 'SiteName') ?  : $this->headTitle()[0] ; ?></h1>

Sinon "erreur de conception" je comprends encore moins... Tu veux peut-être envoyer une variable au layout à partir de la vue?

Dernière modification par Polzie (28-03-2013 19:17:29)

Hors ligne

 

#9 28-03-2013 19:24:16

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

Re: [Résolu] Afficher le titre de la page

Non une méthode genre dans la vue :

Code:

[lang=php]
$this->setTitle("Titre de la page");

// au lieu de headTitle, setTitle se chargera d'injecter dans le headTitle le titre de la page

On pourrait ainsi par la suite récupérer le titre par une autre méthode

Pour ceux qui ont fait du Drupal -> drupal_set_title().

Enfin bon je sais pas vraiment en fait, je dis ptete des bétises hein.

Dernière modification par alien7 (28-03-2013 19:27:40)


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

Hors ligne

 

#10 28-03-2013 22:51:31

aromatix
Membre
Lieu: paris - agadir
Date d'inscription: 12-03-2013
Messages: 20
Site web

Re: [Résolu] Afficher le titre de la page

quand tu dis titre de la page, tu parle d'un titre que tu affiche dans le body ?

( pour l'afficher, par exemple, à coté du logo du site ?)

Dernière modification par aromatix (28-03-2013 22:52:46)

Hors ligne

 

#11 29-03-2013 09:49:03

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

Re: [Résolu] Afficher le titre de la page

Oui je parle du titre de la page que j'afficherai dans une balise h1 :

exemple de layout :

Code:

[lang=php]
                    <?php $title = $this->headTitle();
                    echo ($title[0] !== 'whyBook') ? '<h1>'.$title[0].'</h1>' : ''; ?>

                    <div id="content">
                    <?= $this->content; ?>
                    </div>

là ma balise h1 je voulais le sortir du div content, c'était un choix, c'est tout, bon bah du coup j'ai mis ça à l'intérieur du div content.

Le titre on peut aussi en avoir besoin pour autre chose, par exemple pour twitter ou facebook open graph

Donc au final je pense qu'il faudrait revoir ça dans le framework et non pas bidouiller ou crée des helpers et je ne sais quoi.

Qu'en pensez-vous ?

Dernière modification par alien7 (29-03-2013 09:53:20)


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

Hors ligne

 

#12 29-03-2013 10:33:36

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] Afficher le titre de la page

Là je pense que le problème vient plus de ton utilisation. Typiquement le titre de ton application sera défini dans ton layout (là je parle de l'attribut title) puisqu'il est commun à toute ton application.
Ensuite pour chaque page de ton application tu peux ajouter un sous titre (encore une fois dans le title).

Donc si je résume à cette étape ta vue a connaissance du sous titre puisque tu lui passes soit depuis ton contrôleur, soit tu l'écris directement en dur dans ta vue.

Ensuite si tu veux faire des sous titre pour organiser ta page sous forme de h1 tu vas aussi soit le faire en dur dans ta vue, soit le faire via une variable que tu passes en paramètre à ta vue depuis ton contrôleur.

Donc encore une fois si je résume ta vue a connaissance du sous titre de la page et du titre h1.

A partir de là tu peux récupérer le titre global du site via l'aide de vue headTitle et tu peux créer une arborescence jusqu'à ton h1 (si tu le souhaites).

Enfin l'idée de sortir le h1 de ta vue en le mettant dans le layout n'est pas une bonne idée car le h1 est propre à ta vue et non au layout. C'est sûr que si toute tes vues ont besoin de cet attribut toujours au même endroit c'est chiant de le faire manuellement. Tu peux donc intercepter l'évènement qui se produit juste avant le rendu de la vue pour injecter à ton layout la variable qui est utilisée pour faire ton h1 et à ce moment là tu pourras le sortir du "content"

Hors ligne

 

#13 29-03-2013 11:30:17

aromatix
Membre
Lieu: paris - agadir
Date d'inscription: 12-03-2013
Messages: 20
Site web

Re: [Résolu] Afficher le titre de la page

je croix qu'il y a plusieurs façons de répondre au besoin:


par exemple en renvoyant un titre à partie de laction comme ceci:

Code:

return new VewModel(array(
    'subtitle' => 'Mon Sous Titre',
));

et en utilisant la persistance de ton sous-titre entre tes vues

Code:

<?php 
    // dans ta vue
    $this->placeholder('subtitle')->set($this->subtitle) 
?>

ensuite tu fait un echo là où tu veut dans ta layout

Code:

<?php
    // dans la layout
    echo $this->placeholder('subtitle');
?>

Hors ligne

 

#14 29-03-2013 12:34:02

Polzie
Membre
Date d'inscription: 12-03-2010
Messages: 20

Re: [Résolu] Afficher le titre de la page

Ou mieux car pas de registre static, ni de manipulation de container inutile pour ce que tu recherches.
Dans ta vue :

Code:

$this->layout()->setVariable("title", "mon titre")
// Ou
$this->viewmodel()->getRoot()->setVariable("title", "mon titre")

Dans ton layout :

Code:

echo $this->title;

Hors ligne

 

#15 29-03-2013 13:11:01

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

Re: [Résolu] Afficher le titre de la page

Ok merci smile


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

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