Bonjour à tous!
Une nouvelle fois je fais appel à vous.
j'ai deux headers dans mon default.ctp
<?php if ($this->fetch('header_hp')): ?>
<?php echo $this->fetch('header_hp'); ?>
<?php endif; ?>
<?php if ($this->fetch('header_other_fr')): ?>
<?php echo $this->fetch('header_other_fr'); ?>
<?php endif; ?>
J'appelle soit l'un soit l'autre suivant les vues par
<?= $this->element('header_hp'); ?>
Ici pour une vue ou je désire avoir cet header là.
Déjà une question que je me pose c'est: Est ce que cette syntaxe est bonne?
Mon problème principal est que si je ne suis pas un utilisateur connecté ou si je rafraichi ma page, le bouton de navigation ne fonctionne pas:
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><?php echo $this->Html->image('template_img/logo.png', array('class'=> 'img-responsive margin', 'alt' => 'logo_GSTD.png')); ?></a>
</div>
Pouvez vous s'il vous plait me donner une voie de réponse.
Est ce que cela vient de ma syntaxe énoncée plus haut?
Je buggue complètement. Merci d'avance
Bonsoir.
Tu peux faire comme ceci :
Dans ton layout
$this->fetch('header_other');
Et dans ta vue :
<?php
$this->start('header_other');
echo $this->element('header_hp');
$this->end(); ?>
En gros, lorsque tu démarrera le bloc depuis ta vue, il affichera ce que tu y a mit dedans.
Ce que tu peux faire aussi, dans le cas ou l'un des deux est le plus utilisé dans les vues, tu peux lui en désigner un par défault dans le cas ou tu ne défini pas l'autre dans des vues.
$this->startIfEmpty('header_other');
echo $this->element('header_hp');
$this->end();
Dans ce cas là, tant que tu n'indiqueras pas l'autre élément, il affichera celui-ci et si tu veux afficher l'autre à la place, il te suffit de mettre dans ta vue :
<?php
$this->start('header_other');
echo $this->element('header_other_fr');
$this->end(); ?>
Bonsoir Lartak11,
Merci pour ta réponse qui résout effectivement mon problème de syntaxe. :)
Maintenant il me reste toujours ce problème de bouton de navigation qui ne fonctionne plus si on n'est pas connecté ou si on rafraichit la page!
De rien.
Tu veux parler du bouton pour afficher le menu lorsque la fenêtre est trop petite pour afficher le menu normalement ?
Si tu n'as pas de conditions spécifique, si tu as ce code dans les éléments cités plus haut et qu'ils ont tous les deux le même code que celui cité plus haut, je ne vois pas pourquoi tu aurais ce problème-ci.
Je ne vois pas de quoi ça pourrais venir.
À part peut être si tu as un layout différent selon si l'utilisateur est connecté ou pas et si tu as oublié de chargé un script JS.
Cela pourrait en être la raison.
Non pas d'autre layout.
Au départ, mon layout default.ctp avait un seul header où mon code de header était en dur dedans. Çà fonctionnait parfaitement.
j'ai rajouté mes éléments (que j'ai corrigé grâce à toi :) ). Mes éléments ne sont qu'un coupé collé de mon header de départ pour header_hp et le même pour header_other_fr où j'ai simplement enlevé des liens. mais mon soucis est toujours là.
Donc tu dis, que par exemple, sans faire d'action sur la connexion et juste en rafraîchissant la page, le bouton ne fonctionne plus ?
As-tu regardé dans l'inspecteur de ton navigateur s'il ne t'affiche pas d'erreur au niveau javascript ?
Alors je ne sais pas pourquoi mais:
Je suis chez mes parents (pas chez moi), je suis sur leur ordi pour internet et sur le mien (non connécté à internet) pour le développement.
Quand j'ai voulu démarrer la console de firebug, ça me disais que j'avais une incompatibilité entre ma version firebug et modzilla donc je ne voyais pas les erreurs de script.
Je me suis donc connecté pour charger la version plus récente de firebug, j'ai redémarré modzilla et là ça marche :)
j'avoue que je n'y comprends pas grand chose mais ça marche.
Très gros merci Lartak en tout cas pour tout ce temps que tu m'as consacré.