Intereting Posts
Преобразование пробелов между тегами PRE через DOM-парсер PHP Получение XPath DOMNode PHP: конструктор SoapClient работает очень медленно (занимает 3 минуты) Как вы запускаете длинный PHP-скрипт и продолжаете отправлять обновления в браузер через HTTP? Как установить соединение с файлом PHP на веб-сервере с помощью PhoneGap (приложение для Android) в режиме реального времени? Push-уведомление не получает на iphone Замена Emoticon – PHP Получить идентификатор корзины товаров на странице WooCommerce на выводе, отображать изображения продуктов get_result () -> fetch_assoc () всегда возвращает 1 строку Эффективное объединение 3 таблиц в MYSQL Запись видео с веб-камеры с помощью jquery / flash непосредственно в браузере? Вставка таблицы MySQL Регулярное выражение для соответствия ключевому слову, если оно не заключено в фигурные скобки удалить из S3 с помощью api php с помощью шаблона Формат цены в текущем регионе и валюте

Активные вкладки меню с помощью codeigniter

Какой метод можно использовать в Codeigniter для достижения активных вкладок меню?

Например, у меня есть меню Profile Friends Messages Logout

Когда я нахожусь в контроллере профиля, URL-адрес domain.com/profile/some_function . Вкладка « Profile » должна быть активной, например, путем изменения цвета фона.

Обычно я добавляю php на вкладки, чтобы проверить их соответствующий сегмент URL, и я бы изменил стиль активной вкладки. В Codeigniter я должен использовать хелпер? Какую функцию я могу легко использовать в вкладках?

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

Предположим, вы используете инструкцию foreach для создания своего меню из базы данных:

 <ul> <?php foreach($menu_items as $menu_item):?> <li<?php if($this->uri->segment(2) == url_title($menu_item->name, dash, TRUE)):?> class="active"><?php else:?>><?php endif;?><a href="<?=$menu_item->url;?>"><?=$menu_item->name;?></a></li> <?php endforeach;?> </ul> 

Причина, по которой я url_title() заключается в том, чтобы сделать имя строчным, как сегмент URI, и позаботиться о любых возможных пространствах, которые могут находиться в имени меню и / или сегменте URI. Для этого потребуется, чтобы хелпер URL был включен. Если они не совпадают, используется CSS по умолчанию для элементов <li> .

Я была такая же проблема . Вот мое решение:

В каждом из контроллеров добавьте параметр в функцию

 $data['activeTab'] == "profile"; $this->load->view('viewname',$data); (Profile controller) $data['activeTab'] == "friends"; $this->load->view('viewname',$data); (Friends controller) $data['activeTab'] == "messages"; $this->load->view('viewname',$data); (Messages controller) 

В представлении, где у вас есть панель навигации, добавьте код примерно так:

 <ul id="menu"> <li class="<?php echo ($activeTab == "profile") ? "active" : ""; ?>"><a href="<?php echo base_url(); ?>profile">PROFILE</a></li> <li class="<?php echo ($activeTab == "friends") ? "active" : ""; ?>"><a href="<?php echo base_url(); ?>friends">FRIENDS</a></li> <li class="<?php echo ($activeTab == "messages") ? "active" : ""; ?>"><a href="<?php echo base_url(); ?>messages">MESSAGES</a></li> </ul> 

Это должно решить проблему. Скажите, если проблема не исчезнет.

благодаря

Стиль вкладок – это не PHP, а проблема с CSS. Наведите hover на изменение цвета. Они часто выполняются с помощью ul , но не всегда. Вы можете многому научиться здесь .

Что касается генерации списков, помощник, вероятно, будет хорошей идеей. Вероятно, вы захотите, чтобы один и тот же код был доступен для нескольких разных элементов управления / методов и представлений, поэтому с общим get_menu (); или create_menu (); было бы идеальным в вспомогательном файле. Возможно, вы захотите добавить его в свой MY_html_helper.php.

(Будущие читатели, пожалуйста, прочитайте комментарии)

Существует простой пример создания активного меню на основе контроллера.

  $ci =& get_instance(); // get the current controller $controller = $ci->router->fetch_class(); // you can generate this array dynamically $resources = array(0 => array("controller" => "home", "title" => "Home"), 1 => array("controller" => "products", "title" => "Products"), 2 => array("controller" => "services", "title" => "Services"), ); <ul> <?php foreach($resources as $resource): ?> <?php $class = ( $controller == strtolower($resource["controller"]) ? 'active' : 'inactive' ); ?> <li><a href="<?php echo site_url($resource["controller"]) ?>" class="<?php echo $class; ?>"><?php echo $resource["title"] ?></a></li> <?php endforeach; ?> </ul> 

Конечно, вы можете создать более сложное навигационное меню на основе обоих контроллеров и методов.