Comment identifier les actifs d'un lien de menu dans CakePHP
Je suis de la création d'un accordéon disposition pour un admin de la barre latérale. Maintenant, j'ai besoin d'identifier le lien actif et ajouter une classe active
à ce lien. Voici mon code:
<div class="accordion-group">
<div class="accordion-heading">
<a href="#collapseSeven" data-parent="#side_accordion" data-toggle="collapse" class="accordion-toggle">
<i class="icon-th"></i> Gallery Manager
</a>
</div>
<div class="accordion-body collapse" id="collapseSeven">
<div class="accordion-inner">
<ul class="nav nav-list">
<li>
<?php echo $this->Html->link('View All',array('controller' => 'gallaries', 'action' => 'index'));?>
</li>
<li>
<?php echo $this->Html->link('Add New',array('controller' => 'gallaries', 'action' => 'add'));?>
</li>
</ul>
</div>
</div>
</div>
Quelle est la meilleure façon de le faire? Merci à l'avance!
OriginalL'auteur Krishna | 2012-07-30
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution :
here()
comprend tous les paramètres nommés et la chaîne de requête.L'URL de cette
$this->request->here
n'est pas nécessairement le même que celui généré par le routeur, même si elle doit être. Vous devriez normaliser votre Url avec `Router::normalize() avant de les comparer.OriginalL'auteur Krishna
Pour vérifier si une URL est actuellement active dans Cakephp 2.x, vous devez vérifier si il est normalisé (dans le sens de Router::normalize()) forme est la même que la forme normalisée de la actuellement à l'URL demandée (dans le sens de
$this->request->
).Parfois, vous voudrez peut-être un lâche correspondant à l'affichage d'une page comme actif dans un menu, si un enfant est actuellement affiché à l'écran. Pensez que vous voulez afficher votre lien de menu pour les fruits aperçu du site à
/fruits/
comme active tout en surfant sur la Banane détail site/fruits/banana/
. Vous pouvez atteindre facilement par la recherche d'une correspondance partielle seulement.Pour que votre correspondant peut obtenir plus complexes, par exemple si vous êtes fortement de faire usage de paramètres nommés et de l'aimer et de vouloir en faire état dans votre menu, mais vous devriez trouver votre chemin à partir de là.
Une solution pour votre problème particulier pourrait ressembler à ceci:
Pour faire vos live juste ce petit peu plus facile en ne pensant même pas à propos de cette question, vous pourriez aussi utiliser une aide pour la création d'un menu que quelqu'un d'autre construit comme torifat/cake-menu_builder.
OriginalL'auteur bfncs
Il y a un certain nombre de façons, en voici quelques unes pour l'ajout de la classe pour le conteneur
Ou vous pouvez passer à la
$options
normalement, c'est la façon dont vous devez le faire en PHP, malheureusement, vous pouvez créer votre propre classe d'aide si vous avez une mise en page cohérente.
il existe des aides, etc vous pourriez utiliser. essayez de google ou de recherche cakephp plugins site web.
Vous pourriez essayer de nouvelles aides comme celui-ci, conçu pour travailler avec Twitter Bootstrap. github.com/loadsys/twitter-bootstrap-helper
C'est vraiment bizarre et unSEC manière de le faire et vous pouvez certainement obtenir plus cohérente, souple et élégant en PHP...
OriginalL'auteur David Yell
Ici moyen simple d'ajouter classe active:
Je pense que ce sera utile pour vous.
Router::normalize()
.OriginalL'auteur Faisal
Je sais que c'est assez vieux, mais j'ai trouvé une bonne solution.
Basé sur Faisal la réponse que j'ai écrit mon propre simple Helper:
Peut-être vous avez besoin de modifier la
echo <li>
l'intérieur de la fonction en fonction de vos besoins.Exemple:
$this->request->params['action']
. Et quelques différences au début du fichier. Voir: Cakephp-3-Création-AidesOriginalL'auteur q0re