2014-09-04 3 views
0

У меня есть панель навигации в моем веб-сайте, как:CakePHP: Как сделать динамическую навигационную панель

enter image description here

Вот мой код, чтобы сделать это:

 <ul class="breadcrumb"> 
      <li> 
       <i class="icon-home"></i> 
       <a href="index.html">Home</a> 
       <i class="icon-angle-right"></i> 
      </li> 
      <li> 
      <?php echo $this->Html->link($title_for_layout,array('controller'=>'controllers','action'=>'index','full_base'=>true));?> 
      </li> 
     </ul> 

В этой картине я я работаю с Штатный контроллер. Поэтому моя ссылка «Главная страница> Штабы». Если я сделаю это с Контроллер продуктов будет «Главная страница> Продукция».

  1. Но если я работаю с контроллером и штабов действий является Добавить. Средства «Персонал/добавление». Я хочу показать его на панели навигации, как "Главная> Штабы> Добавить". Итак, как я могу это сделать?

  2. Если я сделал # 1. Текущая ссылка будет "Главная> Штабы> Добавить". Когда я хочу вернуться к указателю Штаба. Я нажимаю «Персонал» в «Домой> Персонал> Добавить». Я должен сделать ссылку внутри как

    $ this-> HTML-> ссылка ($ title_for_layout, массив ('контроллер' => 'штабов', 'действие' => 'индекс')

этой ссылка нормально при работе с контроллером штабов. когда я изменяю к продукту, клиент будет сломан. Как я могу это сделать.

Я использую CakePHP 1.3 к сожалению, я задавать простые вещи, как это. Я новичок в Cake PHP. Спасибо за помощь и чтение.

ответ

1

Вы как бы должны обращаться к этому как для начала. Вам нужно собрать массив всех ссылок, которые вы собираетесь отображать в своих панировочных сухарях, затем пройти и вывести все. Попробуйте что-то вроде этого:

$links = array(); 
// Add the home URL 
$links[] = array(
    'icon' => 'icon-home', 
    'title' => 'Home', 
    'url' => 'index.html' 
); 

// Add the controller 
$links[] = array(
    'title' => ucwords($this->params['controller']), 
    'url' => $this->Html->url(array('controller' => $this->params['controller'], 'action' => 'index', 'full_base' => true)) 
); 

// Now, conditionally add the next parts where necessary 

$param1 = isset($this->params['pass'][0]) ? $this->params['pass'][0] : null; 
if($param1) { 
    $links[] = array(
     'title' => ucwords($param1), 
     'url' => $this->Html->url(array('controller' => $this->params['controller'], 'action' => $this->action, $param1)) 
    ); 
} 

Теперь у вас есть структурированный массив, содержащий три ссылки, которые вы собираетесь выводить, так что вы можете вывести их легко, как это:

<ul class="breadcrumb"> 
    <?php 
    $size = count($links); 
    foreach($links as $i => $link) : ?> 
     <li> 
      <?php 
      // Output icon if it's set 
      if(isset($link['icon'])) 
       echo '<i class="' . $link['icon'] . '"></i>'; ?> 

      // Output the link itself 
      echo $this->Html->link($link['title'], $link['url']); 

      // Output the caret if necessary (it's not the last) 
      if($i < $size - 1) 
       echo '<i class="icon-angle-right"></i>'; 
      ?> 
     </li> 
    <?php endforeach; ?> 
</ul> 

Примечание:

  1. Вы могли бы хотеть, чтобы найти лучший способ получить название для метода, на данный момент я просто прописными буквами имя параметра/контроллера.
  2. Я не тестировал это, но он должен работать теоретически.
  3. Возможно, есть встроенный помощник для создания сухарей - посмотрите.
  4. персонал * (в единственном числе)
+0

Спасибо за ваш ответ, но, может быть, я не достаточно хорошо, чтобы понять. Я буду исследовать это. – TommyDo

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