2017-01-31 3 views
0

Я использую CodeIgniter v3.1.3. Основываясь на учебнике «Статическая страница», я пытаюсь создать статический веб-сайт, содержащий 5 страниц, таких как «Главная», «О компании», «Службы», «Портфолио» и «Контакт».Навигационные меню не работают в CodeIgniter

У меня есть контроллер Pages.php внутри каталога 'application/controllers'.

Мой Pages.php контроллер выглядит

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Pages extends CI_Controller { 
    //Controller logic 
    public function view($page = 'home') 
    { 
     if(!file_exists(APPPATH.'views/pages/'.$page.'.php')){ 
      //Whoops!, we don't have a page for that 
      show_404(); //In-built CI function to show 404 error pages 
     } 

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

Я также создал 5 статических страниц внутри 'application/views/pages' как home.php, about.php, services.php, portfolio.php, contact.php

Общие коды заголовка & нижний колонтитул существует в 'application/views/templates' как footer.php & header.php. Мое меню навигации внутри header.php выглядит

<li><a class="curr_menu" href="<?php echo base_url('pages/view/home');?>">Home</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/about');?>">About Us</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/services');?>">Services</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/portfolio');?>">Portfolio</a> 
</li> 
<li><a class="page-scroll" href="<?php echo base_url('pages/view/contact');?>">Contact Us</a> 
</li> 

Мой routes.php (приложение/Config/routes.php) выглядит

$route['default_controller'] = 'pages/view'; 
$route['(:any)'] = 'pages/view/$1'; 

На домашней странице показана первоначальная нагрузка, тем не менее, когда я нажимаю на любые пункты меню, он возвращает '404 Страница не найдена' ошибка.

Может кто-нибудь объяснить - с четким кодом - показать, чтобы мое меню работало. .htaccess в корне содержит

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 
+0

Вы управляли файлом '.htacess'? –

+0

yes У меня есть файл htaccess. Я отредактировал свой вопрос, чтобы включить мой файл htaccess –

+0

'href =" "' Он работает или нет .try раз –

ответ

0

Я настоятельно рекомендую вам, чтобы вручную перейти к желавшим страницам, написав URL вручную в адресной строке, чтобы убедиться, что ошибка происходит от построения ссылок.

Если это так, то попробуйте использовать

<?php echo site_url('pages/view/home');?> 
+1

change base_url() с site_url() создает ту же страницу, что и не найдена ошибка –

0

Для того, чтобы использовать base_url() вы должны загрузить URL-адрес помощника первого в вашем controller.Like это

public function __construct(){ 
    parent::__construct(); 
    $this->load->helper('url'); 

     } 

Или вы можете загрузить его в application/config/autolaod.php. Вот так ...

$autoload['helper'] = array('url'); 

И не забудьте установить bae_url на application/config/config.php

$config['base_url'] = 'your_url'; 

Также

$config['index_page'] = ''; 
$config['uri_protocol'] = 'REQUEST_URI'; 

В корневой папке. .htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

Да @Hek, ее там вроде $ autoload ['helper'] = array ('url'); –

+0

попробуйте загрузить с контроллера. –

+0

Да @Hek код конфигурации есть так же, как вы упомянули выше –

0

Возможно, ваш URL-адрес выходит неправильно. Ваш контроллер по умолчанию:
«Страницы/просмотр» ?? Если это так, то навигационное меню должно быть так:

<li><a class="curr_menu" href="<?=base_url()?>home">Home</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>about">About Us</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>services">Services</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>portfolio">Portfolio</a> 
</li> 
<li><a class="curr_menu" href="<?=base_url()?>contact">Contact Us</a> 
</li> 

И в конфигурации.php file,

$config['base_url'] = 'http://yoururl/'; //should be followed by forward slash (/) 
    $config['index_page'] = ''; 
Смежные вопросы