2014-04-13 17 views
5

trong tệp master.blade.php của tôi Tôi có một điều hướng mà Im cố gắng sắp xếp lại với nhau.các liên kết hoạt động trong 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> 

Vấn đề ở đây là tất cả chúng đều được đặt thành hoạt động. Không phải trang hiện tại. Tôi đang làm gì sai?

lợi nhuận

Trả lời

0

Lynnais và Jarek Tkaczyk đều có câu trả lời đúng. Nhưng công việc quanh đây là
tạo một tệp hoặc lớp học. Nếu sử dụng lớp học có thể tạo ra một hàm tĩnh với một tên bất cứ điều gì bạn muốn. Và thêm tên tệp hoặc thư mục lớp vào composer.json.

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

Ở đây, app/người giúp đỡ là thư mục chứa các lớp học mà có thể được sử dụng sau khi các lớp helper, và app/helpers.php là file PHP đơn giản với các phương pháp. Xem các dấu phẩy đó trước 'ứng dụng/người trợ giúp'"tệp". Tạo một lớp như thế này.

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

Bây giờ gọi nó là bất cứ khi nào bạn muốn như thế này từ quan điểm

<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> 

HOẶC

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

Chúc mừng mã hóa. :)

10

mảnh này phản đối

Route::current('home.index') 

thay đổi nó để

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

Và tôi khuyên bạn nên thực hiện một chức năng helper của nó, một cái gì đó trông như thế này:

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

Cho vay để phía trên để Jeffrey tại http://laracasts.com


Bạn có thể đặt những người giúp đỡ của bạn ví dụ như trong app/helpers.php, thì bạn cần phải thêm nó vào autoload trong /composer.json như vậy

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

Hmm, Im mới tới laravel - tôi đặt chức năng trợ giúp ở đâu? Bạn có thể liên kết tôi với video của anh ấy không? Câu trả lời tuyệt vời mặc dù! –

+3

https://laracasts.com/lessons/active-states Tôi không chắc chắn nếu nó là miễn phí tho, nhưng laracasts là giá trị chi tiêu một số $. Và chức năng giúp đỡ của bạn đi bất cứ nơi nào bạn thích, chech chỉnh sửa của tôi trong một giây –

+1

Ngọt ngào, có, quá xấu, ông không chấp nhận paypal như một thuê bao. Ive đã gửi email hỗ trợ. Tôi đã chỉnh sửa composer.json và chạy trình soạn nhạc nhưng tôi gặp lỗi: http://cl.ly/image/3q3g3m2M0s0a - đó là tệp composer của tôi và đây là lỗi: http://cl.ly/image/3O0w1G253y3R –

18

Hoặc đơn giản là sử dụng một hoạt động ternary:

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

Giải pháp làm sạch. Chúc mừng! –

Các vấn đề liên quan