2014-04-13 21 views
5

nel mio file master.blade.php Ho una navigazione che sto cercando di mettere insieme.link attivi in ​​laravel 4

<nav class="navbar navbar-default" role="navigation"> 
    <div class="container-fluid"> 
    <div class="col-sm-5"> 
    <ul class="nav navbar-nav" > 
     <li class="{{ Route::current('home.index') ? 'active' : '' }}">{{ HTML::linkAction('[email protected]', 'Home') }} 
     <li><a href="">Locations</a></li> 
     <li class="{{ Route::current('order.index') ? 'active' : '' }}">{{ HTML::linkAction('[email protected]', 'Order Online') }} 
    </ul> 
    </div> 
    <div class="col-sm-5 navbar-right"> 
    <ul class="nav navbar-nav navbar-right"> 
     <li class="{{ Route::current('menu.index') ? 'active' : '' }}">{{ HTML::linkAction('[email protected]', 'Menu') }} 
     <li><a href="">About</a></li> 
     <li><a href="">Contact Us</a></li> 
    </ul> 
    </div> 
    <div class="container-fluid"> 
</nav> 

Il problema qui è che tutti hanno il li impostato su attivo. Non la pagina corrente. Che cosa sto facendo di sbagliato?

risposta

0

Lynnais e Jarek Tkaczyk hanno entrambe le risposte corrette. Ma il lavoro da queste parti è
creare un file o una classe. Se l'uso della classe può creare una funzione statica con un nome qualunque desideri. E aggiungi il nome del file o la cartella della classe a composer.json.

 
... 
"autoload": { 
    "classmap": [ 
     ... , 
     'app/helpers' 
    ], 
    "files": [ 
     "app/helpers.php" 
    ] 
} 

Qui, app/aiutanti è la cartella che contiene le classi che possono essere utilizzate in seguito come le classi di supporto, e app/helpers.php è il file PHP pianura con metodi. Vedere le virgole prima di "app/helper" e "file". Crea una classe come questa.

namespace App\Helper; 
class Helper{ 
    public static function set_active($route){ 
     return (\Request::is($route.'/*') || \Request::is($route)) ? "active" : ''; 
    } 
} 

Ora lo chiamano ogni volta che vuoi come questo da vista

<ul class="nav navbar-nav"> 
    <li class="dropdown {{ \App\Helper\Helper::set_active('/') }}"> {{ HTML::decode(HTML::link('/','<i class="fa fa-home"></i> Home ', array('class' => 'dropdown-toggle'))) }} </li> 
    <li class="dropdown {{ \App\Helper\Helper::set_active('admins') }}"> {{ HTML::decode(HTML::link('/admins','<i class="fa fa-user"></i> Admins ', array('class' => 'dropdown-toggle'))) }} </li>     
</ul> 

O

<li class="{{\App\Helper\Helper::set_active('/')}}">Home</li> 
<li class="{{\App\Helper\Helper::set_active('admins')}}">Admins</li> 

codifica Felice. :)

10

Questo pezzo ritorna oggetto

Route::current('home.index') 

cambiamento a

Route::currentRouteName() == 'home.index' 

e vi suggerisco di fare una funzione di supporto di essa, qualcosa di simile a questo:

function setActive($route, $class = 'active') 
{ 
    return (Route::currentRouteName() == $route) ? $class : ''; 
} 

Crediti per lo sopra a Jeffrey a http://laracasts.com


È possibile inserire i tuoi aiutanti per esempio in app/helpers.php, allora avete bisogno di aggiungerlo per caricare automaticamente in /composer.json in questo modo

... 
"autoload": { 
    "classmap": [ 
     ... 
    ], 
    "files": [ 
     "app/helpers.php" 
    ] 
} 
+2

Hmm, Im new to laravel - dove posso inserire una funzione di supporto? Puoi collegarmi al suo video? Ottima risposta però! –

+3

https://laracasts.com/lessons/active-states Non sono sicuro che sia gratis, ma i larici valgono la pena spendere qualche $. E la tua funzione di aiutanti va dove vuoi, metti la mia modifica in un secondo –

+1

Dolce, sì, peccato che non accetti paypal come abbonamento. Ive ha inviato il supporto via email. Ho modificato il compositore.json ed eseguito il compositore, ma ricevo un errore: http://cl.ly/image/3q3g3m2M0s0a - questo è il mio file del compositore, e questo è l'errore: http://cl.ly/image/3O0w1G253y3R –

18

O semplicemente utilizzare un'operazione ternario:

<li {{ (Request::is('*login') ? 'class="active"' : '') }}>Login</li> 
+0

Soluzione detergente. Saluti! –