2012-02-17 4 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; ?> 

Я хочу добавить class="active" в li теге.

+0

Вы используете URL переписывания любой шанс? –

+0

Я использую MVC. –

+0

в первую очередь изменить 'if ($ tatus ==' ... to 'if ($ status'. Вы забыли ** s ** на ** $ tatus ** – ahmet2106

ответ

1

Вы можете построить на массиве:

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(); 
    } 
    } 

теперь вы изменить Еогеасп:

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

условие основано на имени должно быть обработка ... не стесняйтесь изменять по мере необходимости.

Смежные вопросы