CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 01-06-2014 12:53:34

rems
Fraisier
Lieu: Valence
Date d'inscription: 04-06-2012
Messages: 85

Qui a la technique la plus élégante pour "activer un lien"

Bonjour à tous,

Qui a la meilleure technique pour insérer par exemple avec bootstrap css la classe "active" dans un lien de sa navbar (en fonction du layout et/ou de la page ou vous vous trouvez) ?

En d'autres mots, pour passer de

Code: php

  1. <?php echo $this->Html->link('mapage','/monurl',array('class'=>'mesclasses'); ?>

à

Code: php

  1. <?php echo $this->Html->link('mapage','/monurl',array('class'=>'mesclasses active'); ?>

Je vous propose ce petit sondage, car je m'aperçois que sur chaque nouveau projet, je réinvente une nouvelle technique, souvent très peu élégante (pour ne pas dire carrément inélégante).

Quelques pistes :

* php vs javascript ?

* si php : définir une variable dans chaque pages ou layout avec un

Code: php

  1. <?php $this->assign('activeName', 'page-home'); ?>

et dans sa navbar quelque chose comme :

Code: php

  1. <?php echo $this->Html->link('mapage','/monurl',array(
  2. 'class'=>'mesclasses' . ($this->fetch('activeName') == 'mapage' ) ? ' active' : ''
  3. ); ?>

Il y a un bon paquet de solutions je pense, quels sont les votres ?


rems. https://twitter.com/remibecheras
--
Problème résolu ? −−−> Modifier le titre de son premier post en ajoutant [RÉSOLU] au début.

Hors ligne

 

#2 04-10-2015 07:15:53

frmsoc
Brownie
Date d'inscription: 04-08-2015
Messages: 21

Re: Qui a la technique la plus élégante pour "activer un lien"

salut rems,

Sujet intéressant. D'ailleurs il manque un topic générique "architecture logicielle" sur ce forum. L'organisation raisonnée du code, même dans un framework structuré MVC comme cakephp, est plus importante que beaucoup d'autres sujets.

Donc, pour participer à ta discussion :

* Si c'est du js, et qu'on parle d'applications web de bonne facture, c'est qu'on utilise un framework frontend type backbone, angular, ember, ... peu d'intérêt sur un forum cakephp, donc je ne m’étalerai pas

* En cakephp, voilà comment je gère en général :

Un element sidebar, qui "prend" en entrée une variable active.

Dans le layout, où la sidebar doit s'afficher :

Code: php

  1. <?php $this->fetch('sidebar'); ?>

Et sur chaque page (vue) je charge l'élément sidebar avec les entrées appropriées, du genre :

Code: php

  1. <?php $this->start('sidebar'); ?>
  2.     <?php echo $this->element('sidebar', array('active' => 2); ?>
  3. <?php $this->end(); ?>

Hors ligne

 

#3 05-10-2015 09:35:27

cake17
Cooker
Date d'inscription: 29-03-2012
Messages: 379
Site web

Re: Qui a la technique la plus élégante pour "activer un lien"

Bonjour,

Bonne idée pour le nouveau topic, est-ce que "Architecture logicielle/Design Patterns" irait ?

Hors ligne

 

#4 05-10-2015 11:26:02

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: Qui a la technique la plus élégante pour "activer un lien"

Houlàlà le necropost smile

Voici comment j'ai fait pour un de mes projets récents (dans la vue) :

Code: php

  1. <?php
  2.         $currentUrl = Routing\Router::normalize($this->request->here);
  3.         $event_active = [
  4.             'event'            => '',
  5.             'show_my_inbox'    => '',
  6.             'show_profile'     => '',
  7.             'show_my_sentbox'  => '',
  8.             'logout'           => '',
  9.             'show_my_planning' => ''
  10.         ];
  11.         switch ($currentUrl) {
  12.             case Routing\Router::normalize('/participants/show_my_events/'):
  13.                 $event_active['event'] = 'active';
  14.                 break;
  15.             case Routing\Router::normalize('/participants/show_my_inbox/'):
  16.                 $event_active['show_my_inbox'] = 'active';
  17.                 break;
  18.             case Routing\Router::normalize('/participants/show_profile/'):
  19.                 $event_active['show_profile'] = 'active';
  20.                 break;
  21.             case Routing\Router::normalize('/participants/show_my_sentbox/'):
  22.                 $event_active['show_my_sentbox'] = 'active';
  23.                 break;
  24.             case Routing\Router::normalize('/participants/show_my_planning/'):
  25.                 $event_active['show_my_planning'] = 'active';
  26.                 break;
  27.         }

et ensuite :

Code: php

  1. <div class="profile-usermenu">
  2.             <ul class="nav">
  3.                 <li class="<?= $event_active['event'] ?>">
  4.                     <?= $this->Html->link('<i class="glyphicon glyphicon-home"></i>' . __('Mes événements'), [
  5.                         'controller' => 'participants',
  6.                         'action'     => 'show_my_events'
  7.                     ], [
  8.                         'escape' => FALSE
  9.                     ]) ?>
  10.                 </li>
  11.                 <li class="<?= $event_active['show_my_inbox'] ?>">
  12.                     <a href="<?= $this->Url->build([
  13.                        'controller' => 'participants',
  14.                        'action'     => 'show_my_inbox'
  15.                    ]) ?>"><i
  16.                             class="fa fa fa-envelope-o"></i><?= __('Demandes reçues') ?> <?= $this->cell('Demandes::unanswered',
  17.                             [
  18.                                 'participant_id' => $this->request->session()
  19.                                                                   ->read('Auth.User.id')
  20.                             ]); ?></a>
  21.                 </li>
  22.                 <li class="<?= $event_active['show_my_sentbox'] ?>">
  23.                     <?= $this->Html->link('<i class="fa fa-paper-plane-o"></i>' . __('Demandes envoyées'), [
  24.                         'controller' => 'participants',
  25.                         'action'     => 'show_my_sentbox'
  26.                     ], ['escape' => FALSE]) ?>
  27.                 </li>
  28.                 <li class="<?= $event_active['show_my_planning'] ?>">
  29.                     <?= $this->Html->link('<i class="fa fa-calendar"></i>' . __('Afficher mes meetings'), [
  30.                         'controller' => 'plannings',
  31.                         'action'     => 'show_my_planning'
  32.                     ], ['escape' => FALSE]) ?>
  33.                 </li>
  34.                 <li class="<?= $event_active['show_profile'] ?>">
  35.                     <?= $this->Html->link('<i class="fa fa-user"></i>' . __('Mon compte'), [
  36.                         'controller' => 'participants',
  37.                         'action'     => 'show_profile'
  38.                     ], ['escape' => FALSE]) ?>
  39.                 </li>
  40.                 <li class="<?= $event_active['logout'] ?>">
  41.                     <?= $this->Html->link('<i class="fa fa-sign-out"></i>' . __('Se deconnecter'), [
  42.                         'controller' => 'organisateurs',
  43.                         'action'     => 'logout'
  44.                     ], ['escape' => FALSE]) ?>
  45.                 </li>
  46.             </ul>
  47.         </div>
  48.     </div>

Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#5 19-10-2015 21:47:25

frmsoc
Brownie
Date d'inscription: 04-08-2015
Messages: 21

Re: Qui a la technique la plus élégante pour "activer un lien"

@cake17 je réponds un peu tard mais très bonne idée d'ajouter 'Design pattern' dans le titre, ça peut dépasser le cadre de cake si besoin

@cyberbobjr j'avais pas vu la date d'origine. je trouve le forum français amorphe, il y a si peu de développeurs cake en france?

Hors ligne

 

#6 20-10-2015 12:44:17

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: Qui a la technique la plus élégante pour "activer un lien"

oui oui je te confirme que CakePHP est peu développé en France, pas parce que c'est un mauvais produit, mais parce que l'esprit chauvain a frappé : symfony ayant été développé à l'origine par une entreprise francaise, beaucoup d'écoles sont partis sur ce framework, et par là, le marché de la demande s'est adapté à l'offre. Mais il y'a encore quelques irréductibles smile


Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#7 22-10-2015 00:22:14

6120
The Big Cake
Date d'inscription: 06-11-2009
Messages: 379

Re: Qui a la technique la plus élégante pour "activer un lien"

Dévelopeur sur cakephp depuis la version 1.2, j'avoue que je suis un peu inquiet pour l'avenir de cakephp.
Est-ce qu'il sera capable de rattraper son retard (je ne parle pas de technique mais de notoriété) sur Laravel ou Symphony ?
Qu'est-ce qui va attirer les nouveaux dévelopeurs vers la version 3 plutôt que vers un autre système ?
J'ai l'impression (confirmée par plusieurs forum ainsi que par l'activité sur stackoverflow.com) que beaucoup de dévelopeurs ont migré vers Laravel qui est en train de devenir une espèce de standard du framework ?
L'attrait pour Laravel est-il juste un phénomène de mode ?

Ai-je raison de m'inquiéter ?
J'aimerais bien connaître les arguments de l'équipe cakephp.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr