0

我真的很难理解 CI 中的 URL/URI 路由。在这种情况下,我有两个链接,一个是 Home,另一个是 Panel,Home 链接到 main/index 和 panel 链接到 main/panel,下面的代码片段可以更好地理解。

<a href="main/index"> Home </a>
<a href="main/panel"> Panel </a>

这是控制器的代码main.php

class Main extends CI_Controller
{
    public function index()
    {
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->view('templates/header');
        $this->load->view('home');
        $this->load->view('templates/footer');
    }

    public function panel()
    {
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->view('templates/header');
        $this->load->view('panel');
        $this->load->view('templates/footer');
    }
}   

这是我的routes (config/routes.php)

$route['main/index'] = "main/index";
$route['main/panel'] = "main/panel";
$route['default_controller'] = "main/index";

在第一次运行时,它会自动转到主/索引,它工作正常,但是当我点击面板链接时它说找不到对象,所以没有找到主页链接对象

4

1 回答 1

1

首先,你最好在href中有相对于root的路径:

   <a href="/main/index"> Home </a>
   <a href="/main/panel"> Panel </a>

或者,甚至更好的是:

   <a href="<?=$base_url;?>main/index"> Home </a>
   <a href="<?=$base_url;?>main/panel"> Panel </a>

接下来是您正在加载的视图,正确的方法是在控制器功能中加载一个视图:

   $this->load->view('home');

在 home.php 中,您需要包含其他视图 home.php:

   <?php $this->load->view('templates/header');?>
   ...
   <!--YOUR HOME HTML GOES HERE-->
   ...
   <?php $this->load->view('templates/footer');?>

现在路由。一定要使用 /index.php/[controller]/[function] 链接(除非你使用 url rewrite 像这里http://ellislab.com/codeigniter/forums/viewthread/180566/

路由配置:

   $route['default_controller'] = "main/index"; //this is the only thing you need to define

毕竟您的所有页面都可以通过这样的 url 访问:

索引页面:http ://example.com/ , http://example.com/index.php/main/index

面板页面:http ://example.com/index.php/main/panel

于 2012-11-07T08:03:57.467 回答