Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Hello à tous,
Juste une petite question.. est-il possible (et comment ) ? de faire des tabs (avec jquery ui, jquery toolstip par exemple) et ZF ?
J'utilise des layouts (et un framework CSS).
Il y a plusieurs problemes :
- génère-t-on tous le code des 3 onglets ou un onglet et égal à une page, donc une action. Mais du coup, l'intéret des onglets n'est plus.
- comment on utilise çà dans un layout ?
Merci
Fabrice
Hors ligne
salut,
Personnellement je vois pas trop le problème.
Tout ça c'est du javascript, non??
tu écris le code dans ta vue ou ton layout et le css et javascript fait le reste.
ou bien j'ai pas saisi
Hors ligne
oui, mais non .
En fait, si tu as des "faux" onglets qui sont juste des liens vers d'autres pages, cela ne change rien.
Mais si les onglets contiennent tout le code de toutes les pages, et donc, de tous les controlleurs, çà se complique un peu non ?
Fab
Hors ligne
troisème solution tes onglets contiennent des iframe qui sont donc gérés par des contrôleur différents
perso une seule vue sans données les onglets sont construit à la volée en fonction des actions de l'utilisateurs chaque onglet une fois créé (en JS) il fait appel en ajax à un ou des contrôleurs pour obtenir ou traiter les données
A+JYT
Hors ligne
Hello,
Mon layout contient des tabs (presque) vides. Elles possèdent juste un <a> contenant le lien de la page à charger sont loadées lors du click sur le titre par un simple get() de jQuery. La première tabs est toutefois chargée automatiquement.
@+
Hors ligne
Hello,
Merci à tous.
A la rigueur , un petit exemple ne serai pas de refus
.
Fabrice
Hors ligne
un exemple en 30 ligne de js
http://jeanyves.terrien.free.fr/DomTabs.html
Hors ligne
Merci pour ton exemple, mais je parlais d'une interaction avec ZF. Les tabs y'a JqueryUI ou autres.
C'est vraiment comment faire pour remplir, par exemple, 3 tabs avec 3 controllers/actions différents.
Fab
Hors ligne
C'est bien parce que c'est Noël
Les tabs, les liens peuvent être générés avec $this->url() :
<div id="tabs"> <ul> <li><a href="#mon-compte">Mon compte</a></li> <li><a href="#evenements">Evénements</a></li> <li><a href="#mes-inscriptions">Mes inscriptions</a></li> </ul> <div id="mon-compte"><a href="/index/mon-compte"></a></div> <div id="evenements"><a href="/index/voir-evenement"></a></div> <div id="mes-inscriptions"><a href="/index/mes-inscriptions"></a></div> </div>
Le chargement en fin d'HTML :
<script type="text/javascript"> $(function() { $("#tabs").tabs({ select: function(event, ui) { link = $(ui.panel).children(0).attr('href'); $(ui.panel).html('<div style="text-align:center"><img src="/zf/images/ajax-loader.gif" alt="Chargement en cours..." /></div>'); $.get(link, function(data){ $(ui.panel).html('<a href="' + link + '"></a>' + data); }); } }); $("#tabs").tabs('select', 1); }); </script></div>
Le (re)chargement des tabs se fait lors du click sur le titre.
@+
Hors ligne
Merci Papa Noël
Je vais tester tout çà.
Fabrice
Hors ligne
__fabrice a écrit:
Merci pour ton exemple, mais je parlais d'une interaction avec ZF. Les tabs y'a JqueryUI ou autres.
C'est vraiment comment faire pour remplir, par exemple, 3 tabs avec 3 controllers/actions différents.
Fab
dans le contenu des tab tu mets des iframe
et chaque iframe est un appel à une action ZF
c'est ce que j'ai expliqué plus haut
simple non ?
A+JYT
Hors ligne
Hello,
Bonne année à tous
L'exemple de mikaelkael marche nickel.... c'était simple en fait ... je vois toujours la complication.
Par contre, le terme "iframe" semble sortir d'outre-tombe
Fabrice
Hors ligne
et passer par ZendX_Jquery ??? il gère bien les tabls simplement.
Hors ligne
Je connais pas du tout ZendX_Jquery.
Facile à utiliser ?, il existe de bons tutos ?
F.
Hors ligne
très facile à utiliser, il y a un exemple concret sur la documentation Zend. En 3 lignes tu fais 3 parties de ton tab.
Hors ligne
Bon, je file un exemple de l'utilisation de Jquery avec ZF. Plus précisement, ZendX_JQuery et ZF, tabs et ajax :
Le Layout :
// Utilisation de jquery et jqueryUI if ($this->jQuery()->isEnabled()) { $this->jQuery() ->setLocalPath($this->baseUrl() .'/js/jquery/jquery-1.3.2.min.js') ->setUiLocalPath($this->baseUrl() .'/js/jquery/jquery-ui-1.7.2.custom.min.js') ->addStyleSheet($this->baseUrl() .'/css/custom-theme/jquery-ui-1.7.2.custom.css'); echo $this->jQuery(); }
La vue :
<?php // Les 3 tabs echo $this->tabPane( 'tabs', 'news', array('title'=>'news' ) ); echo $this->tabPane( 'tabs', 'guestbook', array('title'=>'guestbook', 'contentUrl'=> $this->baseUrl().'/guestbook/index' ) ); echo $this->tabPane( 'tabs', 'contact', array('title'=>'contact', 'contentUrl'=> $this->baseUrl().'/contact/index' ) ); // Affichage du container, des tabs + parametres optionnels de jquery. echo $this->tabContainer('tabs',array('active'=>'none')); ?>
Avece le parametre contentUrl on précise à ZF et Jquery d'afficher le contenu du tab en utilisant le couple controller/action de ZF. Le tout est automatique.
Autre méthode sans ZendX_jQuery (merci à mikaelkael). La vue :
<div id="tabs"> <ul> <li><a href="#tabs-news">news</a></li> <li><a href="#tabs-guestbook">guestbook</a></li> <li><a href="#tabs-contact">contact</a></li> </ul> <div id="tabs-news"> <a href="<?php echo $this->baseUrl();?>/news/index">news</a> </div> <div id="tabs-guestbook"> <a href="<?php echo $this->baseUrl();?>/guestbook/index">guestbook</a> </div> <div id="tabs-contact"> <a href="<?php echo $this->baseUrl();?>/contact/index">contact</a> </div> </div>
et le fichier js :
$(document).ready(function() { $("#tabs").tabs({ select: function(event, ui) { link = $(ui.panel).children(0).attr('href'); $(ui.panel).html('<div style="text-align:center"><img src="images/ajax-loader.gif" alt="Chargement en cours..." /></div>'); $.get(link, function(data){ $(ui.panel).html('<a href="' + link + '"></a>' + data); }); } }); });
Après, je ne suis pas encore allé en profondeur avec ZendX_jQuery. J'ai lu que la gestion de Jquery avec ZF en était encore au début.
A+Fabrice
Hors ligne
Salut,
Autre question , pour la version sans ZendX_jQuery, on ne peut faire çà avec un layout.html... ou du moins je vois pas comment.
Possible ?
F.
Dernière modification par __fabrice (09-02-2010 22:59:01)
Hors ligne
biensur que c'est possible. tu faits du code javascript (voir la doc de JQuery pour l'utilisation de tabs) dans un .js et tu colles des liens js avec l'aide de vue headscript
Hors ligne