Automatique de la Classe Active Pour Twitter Bootstrap de Navigation dans Laravel
Comme la plupart des gens, je suis en utilisant Twitter Bootstrap pour le site que je suis en train de développer dans Laravel. Jusqu'à présent, je suis en profitant de l'aide de Laravel en PHP équivalent à Rails, mais je me demande si il ya une meilleure façon de faire les barres de navigation. Je suis tenter de faire en sorte que ma barre de navigation li
balises obtenir la classe active automatiquement, donc j'ai ceci:
<ul class="nav nav-pills">
@if(URL::current() . "/" == URL::route('home'))
<li class="active">
@else
<li>
@endif
<a href="{{ route('home') }}">Home</a>
</li>
@if(URL::current() == URL::route('about'))
<li class="active">
@else
<li>
@endif
<a href="{{ route('about') }}">About</a>
</li>
</ul>
Ça va être bien, pour l'instant. Mais quand j'ai menus, et plus navigations il va a l'air terrible pour déboguer et de les traiter.
Est-il rien de semblable à la Gemme Tabulous pour Laravel ou, généralement, une jolie manière de traiter avec la navigation dans Laravel?
OriginalL'auteur DrugCrazed | 2013-06-24
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la Programme d'amorçage paquet, il y a beaucoup d'outils pour vous aider avec Twitter Bootstrap. Dans votre exemple, vous pourriez construire la navigation comme ceci:
Il y a aussi la méthode abrégée, moins verbeux, je n'aime pas particulièrement, mais peut être utilisé:
Il est important de noter que dans les deux exemples, Bootstrapper prend soin de la
active
classe automatiquement, en comparant la demande actuelle URL contre celui transmis à l'élément. Si, toutefois, vous souhaitez spécifier une autre condition pour que cela s'applique, il suffit de passer unactive
valeur, ou d'un tiers de la valeur dans le tableau, pour la plus courte de la méthode. Exemple:ou
C', cela m'attriste de voir un tel projet awesome avec documentation obsolète. Pourtant, il semble qu'ils travaillent à reconstruire à partir de zéro, et nous allons peut-être voir quelque chose de cool bientôt.
Il est tentant de proposer d'écrire le nouveau docs pour eux. Il y a juste les choses mineures comme les constructeurs étant différents. J'ai passé du temps à essayer d'obtenir la barre de navigation de travail parce que leurs docs disent que vous devriez passer le type du premier argument, quand il attend en fait à un tableau.
OriginalL'auteur rmobis
J'utilise ceci:
Merci pour cette!
grand homme! c'est le chemin le plus court que j'ai jamais vu!
OriginalL'auteur joshdcid
J'ai trouvé un petit extrait de ce qui contribue à ce problème. Espérons que cela aide les prochaines personnes qui recherche.
http://mikekoro.com/blog/laravel-4-active-class-for-navigational-menu/
OriginalL'auteur simon
J'ai créé un simple aide pour cette tâche. Je l'ai enregistré comme /app/helpers/Menu.php. Puis dans /app/start/global.php j'ai ajouté mon aide fichier à la
ClassLoader::addDirectories
tableau comme suit:_app_path().'/helpers',
(si la classe n'est pas chargé essayez d'exécuter "compositeur de vidage-autoload" dans la console, plus d'informations sur l'ajout d'aides ici)De votre point de vue. il suffit de fournir le nom de la route et il va créer un élément LI avec un lien à l'intérieur, les "actifs" de la classe est ajouté à l'élément LI. Vous pouvez également ajouter des classes à l'aide de la troisième paramètre.
<li><a href="{{ URL::route('profile-user', array('username' => Auth::user()->username)) }}">Profile</a></li>
Dans ce cas, je reçois une Erreur d'Exception Fatale (E_PARSE): _syntax error, unexpected ')', expecting ',' or ';' _J'ai juste mis à jour le exemple. Voir si cela fonctionne pour vous.
Yep, maintenant ça fonctionne! Je l'utilise comme ceci:
{{ Menu::item('profile-user', 'Profile', 'active',array('username' => Auth::user()->username))}}
J'ai réalisé que je devais enregistrer le classe comme Menu.php (avec la première lettre en majuscule), sinon, une erreur comme la classe, pas trouvé apparaît lors du téléchargement vers le serveur.
Dans le cas où vous souhaitez ajouter un "bootstrap" glyphicon dans un certain lien de menu, vous devez utiliser le
html_entity_decode()
fonction comme suit:{{ html_entity_decode(Menu::item('account-sign-in','<span class="glyphicon glyphicon-log-in"></span> Log out')) }}
OriginalL'auteur Arne
Si vous n'avez pas l'esprit que la solution est basé sur jQuery, alors vous pouvez essayer quelque chose comme:
où
mainmenu
est l'id de votre barre de navigation ou tout autre élément qui contient leli
éléments.OriginalL'auteur Panais
C'est ce que j'utilise:
OriginalL'auteur tkjef
Une bibliothèque pourrait être ici https://code.google.com/p/bootstrap-php/source/browse/#svn%2Ftrunk%2FNavbar
Pas très complexe, mais très facile à utiliser
Cela génère:
en utilisant
la classe active automatiquement l'entrée correspondante
OriginalL'auteur user3077332
Pas un Laravel solution, mais un simple code javascript coté client solution que j'ai écrit aujourd'hui:
https://github.com/davidmars/bootstrapNavActive
Améliorations sur le code sont les bienvenus 😉
OriginalL'auteur davidmars
J'ai utilisé ce travail bien
OriginalL'auteur Harshad Vala
Pour tous ceux qui lisent ce qui est sur Laravel 5.4:
Doit devenir (sortir à la fin ;):
OriginalL'auteur Ruairi McNicholas