导航菜单在CodeIgniter中未按预期工作

时间:2017-01-31 16:30:48

标签: php html css codeigniter

我正在使用CodeIgniter v3.1.3。基于“静态页面”'教程,我正在尝试创建一个包含5个页面的静态网站,例如Home,About,Services,Portfolio和Contact。

我在'application/controllers'目录中有一个Pages.php控制器。

我的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);
    }
}

我还在'application/views/pages'内创建了5个静态页面,如home.php,about.php,services.php,portfolio.php,contact.php

标题和通用的常用代码页脚存在于'application/views/templates',如footer.php&amp; 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(application / config / routes.php)看起来像

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

主页显示为初始加载,但是当我点击任何菜单项时,它会返回 404 Page Not Found &#39;错误。

有人可以解释 - 用清晰的代码 - 显示我的菜单。 根目录中的.htaccess包含

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

3 个答案:

答案 0 :(得分:0)

我强烈建议您通过在地址栏中手动编写URL来手动导航到所需页面,以确保错误来自链接构建。

如果是,请尝试使用

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

答案 1 :(得分:0)

要使用base_url(),您必须先在控制器中加载url helper。就像这样

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

       }

或者你可以在application/config/autolaod.php加载它。就像这样......

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

别忘了在application/config/config.php

设置bae_url
$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]

答案 2 :(得分:0)

可能你的网址出错了。您的默认控制器是
“页面/视图”?? 如果是这样,那么导航菜单应如下所示:

<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>

在config.php文件中,

$config['base_url'] = 'http://yoururl/'; //should be followed by forward slash (/)
    $config['index_page'] = '';