Я собираюсь предположить, что ваши основные разделы навигации почти напрямую отображаются на ваши контроллеры, т. Е.
Home | News | Events
В верхней панели отображается на:
Если это так, у вас уже есть простой способ выбора массива навигации.
Вы можете поместить массив пар ссылок элемент-навигация в конструктор контроллера и передать их во вспомогательное представление в выходных данных.
Пример:
class HomeController extends CI_Controller
{
private $nav;
public function __construct()
{
parent::__construct();
$this->nav = array(
array('Browse', site_url('news/browse')),
array('Edit', site_url('news/edit'))
);
$this->load->vars(array('NavigationArray' => $this->nav));
}
// ...
}
Теперь вы автоматически зарегистрировали переменную во всех ваших представлениях $NavigationArray
, которая содержит массив Отображаемое имя - Ссылка пар.
Затем можно загрузить базовую навигациюПросмотр, который создает ваш subnav из этой переменной (так как он доступен везде).
<? foreach($NavigationArray as $entry): ?>
<a href="<?=$entry[1];?>"><?=$entry[0];?></a>
<? endforeach; ?>
И ниже, вы можете найти наличие массива sub-nav, который вы можете установить в своем контроллере, иливсе (третий опциональный навигационный модуль, о котором вы говорили)
<? if(exists($SubNavigationArray)): ?>
<? foreach($SubNavigationArray as $entry): ?>
<a href="<?=$entry[1];?>"><?=$entry[0];?></a>
<? endforeach; ?>
<? endif; ?>
Пожалуйста, помните, этот экзаменЭто очень простой способ, но в целом это то, как мы передаем данные, я бы не хотел, чтобы вы помещали глобальные переменные в любое место и пытались их поставить в очередь.Просто «загрузите» переменные в механизм представления, и они будут доступны, когда вы перейдете к визуализации ваших представлений / подпредставлений.
Таким образом, контроллер контролирует , какие элементы навигации отображаются.
Также обратите внимание:
Вы можете передавать переменные явно, не полагая, что они будут существовать в пределах вашей области видимости.
$this->load->view('myview', array('NavigationArray' => $this->nav));
Надеюсь, это поможет.