2012-02-17 69 views
1

我想根據您的頁面應用class="active"。什麼是最好的方法來做到這一點?突出顯示陣列中的活動鏈接

例如:

在構造函數中它創建的鏈接名稱和地址的陣列。

class OrderController extends Controller { 

    public $data = array(); 

    private __construct() { 
     $this->data['sidebar'] = array(
      'New Orders' => '/admin/order', 
      'Processing Orders' => '/admin/order/processing', 
      'Completed Orders' => '/admin/order/completed', 
    ); 


    public function actionIndex($status) { 
     $data = $this->data; 
     if ($status == "processing") { 
     //how to apply class="active" when you on the order/processing page? 
     //Apply active in the data['sidebar'] array 
     } 

     $view = new view('orders.php', $data); 
     $view->render(); 
    } 
    } 

數組傳遞到actionIndex()和渲染orders.php

在orders.page,我有這樣的事情:

<?php foreach ($sidebar as $name => $link): ?> 
    <li> 
     <strong><a href="<?php echo $link; ?>"><?php echo $name; ?></a></strong> 
    </li> 
<?php endforeach; ?> 

我想在li標籤添加class="active"

+0

是否使用URL的任何機會改寫? – 2012-02-17 11:20:34

+0

我正在使用MVC。 – 2012-02-17 11:21:43

+0

首先改變'if($ tatus =='...到'if($ status'。你忘記了** s ** ** ** $ tatus ** – ahmet2106 2012-02-17 11:26:22

回答

1

你可以建立陣列上

<?php foreach ($sidebar as $name => $link): ?> 
    <li class="<?php echo $link['class']; ?>"> 
     <strong><a href="<?php echo $link['url']; ?>"><?php echo $name; ?></a></strong> 
    </li> 
<?php endforeach; ?> 
0

我的基本思路是:

if ($tatus == "processing") { 
    data['active'] = 'processing'; 
} 

...........

<?php foreach ($sidebar as $name => $link): ?> 
    <li <?php if ($active == $name) echo class="active"; ?>> 
     <strong><a href="<?php echo $link; ?>"><?php echo $name; ?></a></strong> 
    </li> 
<?php endforeach; ?> 

的條件是基於名稱必須處理......隨意修改如所須。現在

class OrderController extends Controller { 

    public $data = array(); 

    private __construct() { 
     $this->data['sidebar'] = array(
      'New Orders' => array('url'=>'/admin/order', 'class'=>''), 
      'Processing Orders' => array('url'=>'/admin/order/processing', 'class'=>'') 
      'Completed Orders' => array('url'=>'/admin/order/completed', 'class'=>''), 
    ); 


    public function actionIndex($status) { 
     $data = $this->data; 
     if ($status == "processing") { 
      $data['sidebar']['Processing Orders']['class'] = 'active'; 
     } 

     $view = new view('orders.php', $data); 
     $view->render(); 
    } 
    } 

你改變你的foreach: