了解CI路由和$page->;可以';找不到.css或.js


Understanding CI routing and $page -> can't find .css or .js

如果你愿意的话,我在学习Codeigniter时遇到的最困难的部分是URI和URL"理论"。

我遵循了最初关于静态页面的教程,现在代码似乎把除了主导航栏之外的每个链接都搞砸了,需要我不断添加路由参数。我想我一定做错了什么。

在我的控制器中,我目前有以下代码,基于教程:

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

我的文件夹结构是:

+ applications
  + views
    - welcome.php
    + main
      + css
      + js
      - home.php
      - about.php
      - etc.php

我应该指出,welcome.php页面是用于登录页面的。在该页面上,一个链接将引导您访问home.php(main/home/)

我的路由代码如下:

$route['default_controller'] = 'welcome';
$route['main/(:any)'] = 'main/view/$1';
$route['main/home/home'] = 'main/view/$1';
$route['404_override'] = '';

正如你所看到的,我已经不得不在上面贴上<code>$route['main/home/home'] = 'main/view/$1';</code>部分的创可贴,因为在主页上点击"主页"会导致链接到main/home/home/显示我的导航栏,并创建一组全新的缺失链接,标签为main/home/about/

简而言之,我现在正试图引用一个.js文件和一个.css文件,但即使链接正确指向/main/css/style.css,它也无法识别。

这是我的头(在这里我加载.css和.js)的视图代码

<html>
    <head>
        <title><?php echo $title ?> - TownBuilder - Prototype</title>
        <link href="css/structure.css" rel="stylesheet" type="text/css">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
        <script src="js/script.js"></script>
    </head>
<body>
<header>
    <ul>
        <li> <a href="profile"><?php echo $username ?></a></li>
        <li>Account</li>
    </ul>
</header>

关于如何设置路由以使其正确工作,有什么建议吗?

IMHO他们需要从codeigniter教程中删除路由的部分,因为这不是必要的,而且会让每个人都陷入困境。

以下是事情运作的要点。首先评论掉你所有的路线。

控制器:

Class FirstController extends CI_Controller {
  public function home() {
      // do stuff
      $this->load->view('home');
  }
}

确保在视图文件夹中有一个名为home.php的视图。

那么url应该是<base_url>/controller/method,所以在这种情况下它将是<base_url>/FirstController/home

我认为你应该在根目录(应用程序文件夹的外部,一个名为css的文件夹)上添加css/js文件,因为CI有.htaccess文件,拒绝对应用程序文件夹进行所有访问。您只能在脚本中包含这些文件。