CodeIgniter/PHP: как получить URI на странице просмотра .php

Я столкнулся с проблемой, аналогичной этому пользователю: Как добавить активный класс в гиперссылки codeigniter?

и ответ заключался в том, чтобы вставить следующее на страницу просмотра .php:

<a class="<?php if($this->uri->segment(1)=="search"){echo "active";}?>" href="<?=base_url('search')?>">
        <i class="icon-search"></i>
        <span>BEDRIJF ZOEKEN</span>
</a>

Когда я вставляю это на свою страницу, даже если мой URL-адрес «поиск», он не назначает класс «активный» тегу ссылки. Я пытался сделать это:

<?php 
$uri = $this->uri->segment(1);
echo "<script type='text/javascript'>alert('$uri');</script>";
?>

и ничего не предупреждает (в окне предупреждения ничего не отображается). Я также попытался предупредить следующее:

$this->uri->uri_string()

и я получаю тот же результат (пустое окно предупреждения). Что мне не хватает?

Изменить: мой контроллер - Pages.php:

<?php
class Pages extends CI_Controller {

    public function view($page = 'home') {

        if ( ! file_exists(APPPATH.'/views/pages/'.$page.'.php'))
        {
            // Whoops, we don't have a page for that!
            show_404();
        }

        $data['title'] = ucfirst($page); // Capitalize the first letter
        $this->load->view('templates/header', $data);
        $this->load->view('pages/'.$page, $data);
        $this->load->view('templates/footer', $data);
    }

}
?>

person SilentDev    schedule 12.08.2015    source источник
comment
как называется твой контроллер??   -  person Abdulla Nilam    schedule 12.08.2015
comment
@Abdulla, имя моего контроллера - Pages. Я отредактирую свою страницу и покажу свой контроллер.   -  person SilentDev    schedule 12.08.2015
comment
опубликуйте свою ссылку в вопросе   -  person Meenesh Jain    schedule 12.08.2015
comment
@MeeneshJain Моя ссылка? Мой сайт сейчас находится в разработке (я запускаю его на локальном хосте).   -  person SilentDev    schedule 12.08.2015
comment
Можешь vardump свой $this->uri->segment(1) посмотреть, что у него есть.   -  person Ahmad Baktash Hayeri    schedule 12.08.2015
comment
я имею в виду опубликовать полную ссылку в вопросе.   -  person Meenesh Jain    schedule 12.08.2015


Ответы (2)


Попробуй это

<a class="<?php if($this->uri->segment(1)=="Pages"){echo "active";}?>" href="<?=base_url('Pages')?>">
        <i class="icon-search"></i>
        <span>BEDRIJF ZOEKEN</span>
</a>

$this->uri->segment(1) означает www.example.com/Pages/my_Method

  1. Base URL = www.example.com
  2. $this->uri->segment(1) = Pages
  3. $this->uri->segment(2) = my_Method
person Abdulla Nilam    schedule 12.08.2015
comment
о, хорошо, так что это сработало (я просто изменил страницы на страницы, потому что люди обычно вводят URL-адреса в нижнем регистре). - person SilentDev; 12.08.2015
comment
@ user2719875 Я. Хост будет чувствителен к регистру - person Abdulla Nilam; 12.08.2015
comment
Хост будет чувствителен к регистру? Что именно вы подразумеваете под хостом? - person SilentDev; 12.08.2015
comment
хост означает онлайн-сервер - person Abdulla Nilam; 12.08.2015
comment
о, ладно, даже локальный хост чувствителен к регистру. - person SilentDev; 12.08.2015
comment
Но локальный хост не причинит никакого вреда. Но сервер не такой. У меня большой опыт подобных ошибок. в любом случае рад помочь: - person Abdulla Nilam; 12.08.2015

Как я видел, вы пытаетесь применить текущее меню как class='active'. Я предлагаю вам это вместо того, чтобы находить uri и сопоставлять его. Вы можете использовать следующий метод для вашего контроллера и просмотра.

Контроллер

$data['active_menu'] ='search' or

$data['active_menu'] ='home' or

$data['active_menu'] ='help'

   `$this->load->view('templates/header', $data);
    $this->load->view('pages/'.$page, $data);
    $this->load->view('templates/footer', $data);`

Просмотр страниц (Home_view.php/search_view.php/help_view.php)

<a class="<?php if($active_menu=="search"){echo "active";}?>" href="<?=base_url('Pages')?>"> <i class="icon-search"></i> <span>BEDRIJF ZOEKEN</span> </a>

person Chintan7027    schedule 12.08.2015